| 1 |
|
| 2 | #ifndef _LINUX_STATFS_H
|
| 3 | #define _LINUX_STATFS_H
|
| 4 |
|
| 5 | #include <linux/types.h>
|
| 6 | #include <asm/statfs.h>
|
| 7 | #include <asm/byteorder.h>
|
| 8 |
|
| 9 | struct kstatfs {
|
| 10 | long f_type;
|
| 11 | long f_bsize;
|
| 12 | u64 f_blocks;
|
| 13 | u64 f_bfree;
|
| 14 | u64 f_bavail;
|
| 15 | u64 f_files;
|
| 16 | u64 f_ffree;
|
| 17 | __kernel_fsid_t f_fsid;
|
| 18 | long f_namelen;
|
| 19 | long f_frsize;
|
| 20 | long f_flags;
|
| 21 | long f_spare[4];
|
| 22 | };
|
| 23 |
|
| 24 | |
| 25 | * Definitions for the flag in f_flag.
|
| 26 | *
|
| 27 | * Generally these flags are equivalent to the MS_ flags used in the mount
|
| 28 | * ABI. The exception is ST_VALID which has the same value as MS_REMOUNT
|
| 29 | * which doesn't make any sense for statfs.
|
| 30 |
|
| 31 | #define ST_RDONLY 0x0001
|
| 32 | #define ST_NOSUID 0x0002
|
| 33 | #define ST_NODEV 0x0004
|
| 34 | #define ST_NOEXEC 0x0008
|
| 35 | #define ST_SYNCHRONOUS 0x0010
|
| 36 | #define ST_VALID 0x0020
|
| 37 | #define ST_MANDLOCK 0x0040
|
| 38 |
|
| 39 |
|
| 40 |
|
| 41 | #define ST_NOATIME 0x0400
|
| 42 | #define ST_NODIRATIME 0x0800
|
| 43 | #define ST_RELATIME 0x1000
|
| 44 | #define ST_NOSYMFOLLOW 0x2000
|
| 45 |
|
| 46 | struct dentry;
|
| 47 | extern int vfs_get_fsid(struct dentry *dentry, __kernel_fsid_t *fsid);
|
| 48 |
|
| 49 | static inline __kernel_fsid_t u64_to_fsid(u64 v)
|
| 50 | {
|
| 51 | return (__kernel_fsid_t){.val = {(u32)v, (u32)(v>>32)}};
|
| 52 | }
|
| 53 |
|
| 54 |
|
| 55 | static inline __kernel_fsid_t uuid_to_fsid(__u8 *uuid)
|
| 56 | {
|
| 57 | return u64_to_fsid(le64_to_cpup((void *)uuid) ^
|
| 58 | le64_to_cpup((void *)(uuid + sizeof(u64))));
|
| 59 | }
|
| 60 |
|
| 61 | #endif
|