qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Shea Levy <shea@shealevy.com>
To: qemu-devel@nongnu.org
Cc: Shea Levy <shea@shealevy.com>
Subject: [Qemu-devel] [PATCH v2] linux-user: Support f_flags in statfs when available.
Date: Sun, 18 Feb 2018 21:45:55 -0500	[thread overview]
Message-ID: <20180219024555.26467-1-shea@shealevy.com> (raw)
In-Reply-To: <20180218190050.19517-1-shea@shealevy.com>

Signed-off-by: Shea Levy <shea@shealevy.com>
---
 configure                 | 20 ++++++++++++++++++
 linux-user/syscall.c      |  3 +++
 linux-user/syscall_defs.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+)

diff --git a/configure b/configure
index 913e14839d..52fe2bf941 100755
--- a/configure
+++ b/configure
@@ -5303,6 +5303,22 @@ if compile_prog "" "" ; then
     have_utmpx=yes
 fi
 
+##########################################
+# Check for newer fields of struct statfs on Linux
+
+if test "$linux_user" = "yes"; then
+  cat > $TMPC <<EOF
+#include <sys/vfs.h>
+
+int main(void) {
+  struct statfs fs;
+  fs.f_flags = 0;
+}
+EOF
+  if compile_object ; then
+      have_statfs_flags=yes
+  fi
+fi
 ##########################################
 # checks for sanitizers
 
@@ -6518,6 +6534,10 @@ if test "$have_utmpx" = "yes" ; then
   echo "HAVE_UTMPX=y" >> $config_host_mak
 fi
 
+if test "$have_statfs_flags" = "yes" ; then
+  echo "HAVE_STATFS_FLAGS=y" >> $config_host_mak
+fi
+
 if test "$ivshmem" = "yes" ; then
   echo "CONFIG_IVSHMEM=y" >> $config_host_mak
 fi
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 82b35a6bdf..77481eca2c 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -9534,6 +9534,9 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
             __put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]);
             __put_user(stfs.f_namelen, &target_stfs->f_namelen);
             __put_user(stfs.f_frsize, &target_stfs->f_frsize);
+#ifdef HAVE_STATFS_FLAGS
+            __put_user(stfs.f_flags, &target_stfs->f_flags);
+#endif
             memset(target_stfs->f_spare, 0, sizeof(target_stfs->f_spare));
             unlock_user_struct(target_stfs, arg2, 1);
         }
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index a35c52a60a..64aa49d3c5 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -362,7 +362,14 @@ struct kernel_statfs {
 	int f_ffree;
         kernel_fsid_t f_fsid;
 	int f_namelen;
+#ifdef HAVE_STATFS_FLAGS
+	int f_frsize;
+	int f_flags;
+	int f_spare[4];
+#else
 	int f_spare[6];
+#endif
+
 };
 
 struct target_dirent {
@@ -2223,7 +2230,12 @@ struct target_statfs {
 	/* Linux specials */
 	target_fsid_t		f_fsid;
 	int32_t			f_namelen;
+#ifdef HAVE_STATFS_FLAGS
+	int32_t			f_flags;
+	int32_t			f_spare[5];
+#else
 	int32_t			f_spare[6];
+#endif
 };
 #else
 struct target_statfs {
@@ -2239,7 +2251,12 @@ struct target_statfs {
 	/* Linux specials */
 	target_fsid_t		f_fsid;
 	abi_long		f_namelen;
+#ifdef HAVE_STATFS_FLAGS
+	abi_long		f_flags;
+	abi_long		f_spare[5];
+#else
 	abi_long		f_spare[6];
+#endif
 };
 #endif
 
@@ -2255,7 +2272,12 @@ struct target_statfs64 {
 	uint64_t	f_bavail;
 	target_fsid_t	f_fsid;
 	uint32_t	f_namelen;
+#ifdef HAVE_STATFS_FLAGS
+	uint32_t	f_flags;
+	uint32_t	f_spare[5];
+#else
 	uint32_t	f_spare[6];
+#endif
 };
 #elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) || \
        defined(TARGET_SPARC64) || defined(TARGET_AARCH64)) && \
@@ -2271,7 +2293,12 @@ struct target_statfs {
 	target_fsid_t f_fsid;
 	abi_long f_namelen;
 	abi_long f_frsize;
+#ifdef HAVE_STATFS_FLAGS
+	abi_long f_flags;
+	abi_long f_spare[4];
+#else
 	abi_long f_spare[5];
+#endif
 };
 
 struct target_statfs64 {
@@ -2285,7 +2312,12 @@ struct target_statfs64 {
 	target_fsid_t f_fsid;
 	abi_long f_namelen;
 	abi_long f_frsize;
+#ifdef HAVE_STATFS_FLAGS
+	abi_long f_flags;
+	abi_long f_spare[4];
+#else
 	abi_long f_spare[5];
+#endif
 };
 #elif defined(TARGET_S390X)
 struct target_statfs {
@@ -2299,7 +2331,13 @@ struct target_statfs {
     kernel_fsid_t f_fsid;
     int32_t  f_namelen;
     int32_t  f_frsize;
+#ifdef HAVE_STATFS_FLAGS
+    int32_t  f_flags;
+    int32_t  f_spare[4];
+#else
     int32_t  f_spare[5];
+#endif
+
 };
 
 struct target_statfs64 {
@@ -2313,7 +2351,12 @@ struct target_statfs64 {
     kernel_fsid_t f_fsid;
     int32_t  f_namelen;
     int32_t  f_frsize;
+#ifdef HAVE_STATFS_FLAGS
+    int32_t  f_flags;
+    int32_t  f_spare[4];
+#else
     int32_t  f_spare[5];
+#endif
 };
 #else
 struct target_statfs {
@@ -2327,7 +2370,12 @@ struct target_statfs {
 	target_fsid_t f_fsid;
 	uint32_t f_namelen;
 	uint32_t f_frsize;
+#ifdef HAVE_STATFS_FLAGS
+	uint32_t f_flags;
+	uint32_t f_spare[4];
+#else
 	uint32_t f_spare[5];
+#endif
 };
 
 struct target_statfs64 {
@@ -2341,7 +2389,12 @@ struct target_statfs64 {
 	target_fsid_t f_fsid;
         uint32_t f_namelen;
 	uint32_t f_frsize;
+#ifdef HAVE_STATFS_FLAGS
+	uint32_t f_flags;
+	uint32_t f_spare[4];
+#else
 	uint32_t f_spare[5];
+#endif
 };
 #endif
 
-- 
2.16.1

  reply	other threads:[~2018-02-19  2:46 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-18 19:00 [Qemu-devel] [PATCH] linux-user: Support f_flags in statfs when available Shea Levy
2018-02-19  2:45 ` Shea Levy [this message]
2018-02-22 14:25   ` [Qemu-devel] [PATCH v2] " no-reply
2018-02-22 15:18     ` Shea Levy
2018-02-23  2:54       ` Fam Zheng
2018-02-23  4:49   ` no-reply
2018-02-23  4:57   ` [Qemu-devel] [PATCH v3] " Shea Levy
2018-02-23  5:05     ` no-reply
2018-02-25 15:24     ` Laurent Vivier
2018-03-01 11:15       ` [Qemu-devel] [PATCH v4] " Shea Levy
2018-03-01 11:19         ` Laurent Vivier
2018-03-01 11:25         ` no-reply
2018-03-09 19:56         ` Laurent Vivier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180219024555.26467-1-shea@shealevy.com \
    --to=shea@shealevy.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).