Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Feb 2017 20:32:37 +0000 (UTC)
From:      Edward Tomasz Napierala <trasz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r314282 - in head/sys: amd64/linux32 compat/linux i386/linux
Message-ID:  <201702252032.v1PKWbXK026493@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: trasz
Date: Sat Feb 25 20:32:37 2017
New Revision: 314282
URL: https://svnweb.freebsd.org/changeset/base/314282

Log:
  Fix linux_fstatfs() to return proper value for f_frsize. Without it,
  linux df(1) binary from Xenial shows garbage.
  
  Reviewed by:	dchagin
  MFC after:	2 weeks
  Sponsored by:	DARPA, AFRL
  Differential Revision:	https://reviews.freebsd.org/D9692

Modified:
  head/sys/amd64/linux32/linux.h
  head/sys/compat/linux/linux_stats.c
  head/sys/i386/linux/linux.h

Modified: head/sys/amd64/linux32/linux.h
==============================================================================
--- head/sys/amd64/linux32/linux.h	Sat Feb 25 20:21:39 2017	(r314281)
+++ head/sys/amd64/linux32/linux.h	Sat Feb 25 20:32:37 2017	(r314282)
@@ -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: head/sys/compat/linux/linux_stats.c
==============================================================================
--- head/sys/compat/linux/linux_stats.c	Sat Feb 25 20:21:39 2017	(r314281)
+++ head/sys/compat/linux/linux_stats.c	Sat Feb 25 20:32:37 2017	(r314282)
@@ -303,7 +303,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
@@ -371,6 +373,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);
 }
@@ -415,6 +420,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: head/sys/i386/linux/linux.h
==============================================================================
--- head/sys/i386/linux/linux.h	Sat Feb 25 20:21:39 2017	(r314281)
+++ head/sys/i386/linux/linux.h	Sat Feb 25 20:32:37 2017	(r314282)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702252032.v1PKWbXK026493>