Author: trasz
Date: Sun Mar 19 10:39:59 2017
New Revision: 315543
URL: https://svnweb.freebsd.org/changeset/base/315543

Log:
  MFC r314282:
  
  Fix linux_fstatfs() to return proper value for f_frsize. Without it,
  linux df(1) binary from Xenial shows garbage.

Modified:
  stable/11/sys/amd64/linux32/linux.h
  stable/11/sys/compat/linux/linux_stats.c
  stable/11/sys/i386/linux/linux.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/amd64/linux32/linux.h
==============================================================================
--- stable/11/sys/amd64/linux32/linux.h Sun Mar 19 10:38:27 2017        
(r315542)
+++ stable/11/sys/amd64/linux32/linux.h Sun Mar 19 10:39:59 2017        
(r315543)
@@ -250,7 +250,9 @@ struct l_statfs64 { 
         uint64_t        f_ffree; 
         l_fsid_t        f_fsid;
         l_int           f_namelen;
-        l_int           f_spare[6];
+        l_int           f_frsize;
+        l_int           f_flags;
+        l_int           f_spare[4];
 } __packed;
 
 /* sigaction flags */

Modified: stable/11/sys/compat/linux/linux_stats.c
==============================================================================
--- stable/11/sys/compat/linux/linux_stats.c    Sun Mar 19 10:38:27 2017        
(r315542)
+++ stable/11/sys/compat/linux/linux_stats.c    Sun Mar 19 10:39:59 2017        
(r315543)
@@ -339,7 +339,9 @@ struct l_statfs {
        l_long          f_ffree;
        l_fsid_t        f_fsid;
        l_long          f_namelen;
-       l_long          f_spare[6];
+       l_long          f_frsize;
+       l_long          f_flags;
+       l_long          f_spare[4];
 };
 
 #define        LINUX_CODA_SUPER_MAGIC  0x73757245L
@@ -407,6 +409,9 @@ bsd_to_linux_statfs(struct statfs *bsd_s
        linux_statfs->f_fsid.val[0] = bsd_statfs->f_fsid.val[0];
        linux_statfs->f_fsid.val[1] = bsd_statfs->f_fsid.val[1];
        linux_statfs->f_namelen = MAXNAMLEN;
+       linux_statfs->f_frsize = bsd_statfs->f_bsize;
+       linux_statfs->f_flags = 0;
+       memset(linux_statfs->f_spare, 0, sizeof(linux_statfs->f_spare));
 
        return (0);
 }
@@ -451,6 +456,9 @@ bsd_to_linux_statfs64(struct statfs *bsd
        linux_statfs->f_fsid.val[0] = bsd_statfs->f_fsid.val[0];
        linux_statfs->f_fsid.val[1] = bsd_statfs->f_fsid.val[1];
        linux_statfs->f_namelen = MAXNAMLEN;
+       linux_statfs->f_frsize = bsd_statfs->f_bsize;
+       linux_statfs->f_flags = 0;
+       memset(linux_statfs->f_spare, 0, sizeof(linux_statfs->f_spare));
 }
 
 int

Modified: stable/11/sys/i386/linux/linux.h
==============================================================================
--- stable/11/sys/i386/linux/linux.h    Sun Mar 19 10:38:27 2017        
(r315542)
+++ stable/11/sys/i386/linux/linux.h    Sun Mar 19 10:39:59 2017        
(r315543)
@@ -225,7 +225,9 @@ struct l_statfs64 { 
         uint64_t        f_ffree; 
         l_fsid_t        f_fsid;
         l_int           f_namelen;
-        l_int           f_spare[6];
+        l_int           f_frsize;
+        l_int           f_flags;
+        l_int           f_spare[4];
 };
 
 #define        LINUX_NSIG_WORDS        2
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to