From e3f947a19a8f64fd190972561d75557f92d8a953 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 18 Feb 2018 14:33:43 -0500 Subject: [PATCH] Add missing files --- .../virtualization/qemu/statfs-flags.patch | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 pkgs/applications/virtualization/qemu/statfs-flags.patch diff --git a/pkgs/applications/virtualization/qemu/statfs-flags.patch b/pkgs/applications/virtualization/qemu/statfs-flags.patch new file mode 100644 index 000000000000..c0f0162aacc9 --- /dev/null +++ b/pkgs/applications/virtualization/qemu/statfs-flags.patch @@ -0,0 +1,200 @@ +commit d3282d2512774dc5027c98930a3852b2b6e8407a +Author: Shea Levy +Date: Sun Feb 18 13:50:11 2018 -0500 + + linux-user: Support f_flags in statfs when available. + + Signed-off-by: Shea Levy + +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 < ++ ++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..9f90451caf 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,13 @@ struct target_statfs { + /* Linux specials */ + target_fsid_t f_fsid; + int32_t f_namelen; ++#ifdef HAVE_STATFS_FLAGS ++ int32_t f_frsize; ++ int32_t f_flags; ++ int32_t f_spare[4]; ++#else + int32_t f_spare[6]; ++#endif + }; + #else + struct target_statfs { +@@ -2239,7 +2252,13 @@ struct target_statfs { + /* Linux specials */ + target_fsid_t f_fsid; + abi_long f_namelen; ++#ifdef HAVE_STATFS_FLAGS ++ abi_long f_frsize; ++ abi_long f_flags; ++ abi_long f_spare[4]; ++#else + abi_long f_spare[6]; ++#endif + }; + #endif + +@@ -2255,7 +2274,13 @@ struct target_statfs64 { + uint64_t f_bavail; + target_fsid_t f_fsid; + uint32_t f_namelen; ++#ifdef HAVE_STATFS_FLAGS ++ uint32_t f_frsize; ++ uint32_t f_flags; ++ uint32_t f_spare[4]; ++#else + uint32_t f_spare[6]; ++#endif + }; + #elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) || \ + defined(TARGET_SPARC64) || defined(TARGET_AARCH64)) && \ +@@ -2271,7 +2296,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 +2315,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 +2334,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 +2354,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 +2373,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 +2392,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 +