Skip to content

Commit

Permalink
linux-user: Support f_flags in statfs when available.
Browse files Browse the repository at this point in the history
Signed-off-by: Shea Levy <shea@shealevy.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20180301111500.15717-1-shea@shealevy.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
  • Loading branch information
shlevy authored and vivier committed Mar 9, 2018
1 parent 3ff4845 commit d4247ec
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 22 deletions.
5 changes: 5 additions & 0 deletions linux-user/syscall.c
Expand Up @@ -9545,6 +9545,11 @@ 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 _STATFS_F_FLAGS
__put_user(stfs.f_flags, &target_stfs->f_flags);
#else
__put_user(0, &target_stfs->f_flags);
#endif
memset(target_stfs->f_spare, 0, sizeof(target_stfs->f_spare));
unlock_user_struct(target_stfs, arg2, 1);
}
Expand Down
41 changes: 19 additions & 22 deletions linux-user/syscall_defs.h
Expand Up @@ -352,19 +352,6 @@ typedef struct {
int val[2];
} kernel_fsid_t;

struct kernel_statfs {
int f_type;
int f_bsize;
int f_blocks;
int f_bfree;
int f_bavail;
int f_files;
int f_ffree;
kernel_fsid_t f_fsid;
int f_namelen;
int f_spare[6];
};

struct target_dirent {
abi_long d_ino;
abi_long d_off;
Expand Down Expand Up @@ -2226,7 +2213,8 @@ struct target_statfs {
/* Linux specials */
target_fsid_t f_fsid;
int32_t f_namelen;
int32_t f_spare[6];
int32_t f_flags;
int32_t f_spare[5];
};
#else
struct target_statfs {
Expand All @@ -2242,7 +2230,8 @@ struct target_statfs {
/* Linux specials */
target_fsid_t f_fsid;
abi_long f_namelen;
abi_long f_spare[6];
abi_long f_flags;
abi_long f_spare[5];
};
#endif

Expand All @@ -2258,7 +2247,8 @@ struct target_statfs64 {
uint64_t f_bavail;
target_fsid_t f_fsid;
uint32_t f_namelen;
uint32_t f_spare[6];
uint32_t f_flags;
uint32_t f_spare[5];
};
#elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) || \
defined(TARGET_SPARC64) || defined(TARGET_AARCH64) || \
Expand All @@ -2274,7 +2264,8 @@ struct target_statfs {
target_fsid_t f_fsid;
abi_long f_namelen;
abi_long f_frsize;
abi_long f_spare[5];
abi_long f_flags;
abi_long f_spare[4];
};

struct target_statfs64 {
Expand All @@ -2288,7 +2279,8 @@ struct target_statfs64 {
target_fsid_t f_fsid;
abi_long f_namelen;
abi_long f_frsize;
abi_long f_spare[5];
abi_long f_flags;
abi_long f_spare[4];
};
#elif defined(TARGET_S390X)
struct target_statfs {
Expand All @@ -2302,7 +2294,9 @@ struct target_statfs {
kernel_fsid_t f_fsid;
int32_t f_namelen;
int32_t f_frsize;
int32_t f_spare[5];
int32_t f_flags;
int32_t f_spare[4];

};

struct target_statfs64 {
Expand All @@ -2316,7 +2310,8 @@ struct target_statfs64 {
kernel_fsid_t f_fsid;
int32_t f_namelen;
int32_t f_frsize;
int32_t f_spare[5];
int32_t f_flags;
int32_t f_spare[4];
};
#else
struct target_statfs {
Expand All @@ -2330,7 +2325,8 @@ struct target_statfs {
target_fsid_t f_fsid;
uint32_t f_namelen;
uint32_t f_frsize;
uint32_t f_spare[5];
uint32_t f_flags;
uint32_t f_spare[4];
};

struct target_statfs64 {
Expand All @@ -2344,7 +2340,8 @@ struct target_statfs64 {
target_fsid_t f_fsid;
uint32_t f_namelen;
uint32_t f_frsize;
uint32_t f_spare[5];
uint32_t f_flags;
uint32_t f_spare[4];
};
#endif

Expand Down

0 comments on commit d4247ec

Please sign in to comment.