1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_STAT_H 3 #define _LINUX_STAT_H 4 5 6 #include <asm/stat.h> 7 #include <uapi/linux/stat.h> 8 9 #define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO) 10 #define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO) 11 #define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH) 12 #define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH) 13 #define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH) 14 15 #define UTIME_NOW ((1l << 30) - 1l) 16 #define UTIME_OMIT ((1l << 30) - 2l) 17 18 #include <linux/types.h> 19 #include <linux/time.h> 20 #include <linux/uidgid.h> 21 22 struct kstat { 23 u32 result_mask; /* What fields the user got */ 24 umode_t mode; 25 unsigned int nlink; 26 uint32_t blksize; /* Preferred I/O size */ 27 u64 attributes; 28 u64 attributes_mask; 29 #define KSTAT_ATTR_FS_IOC_FLAGS \ 30 (STATX_ATTR_COMPRESSED | \ 31 STATX_ATTR_IMMUTABLE | \ 32 STATX_ATTR_APPEND | \ 33 STATX_ATTR_NODUMP | \ 34 STATX_ATTR_ENCRYPTED | \ 35 STATX_ATTR_VERITY \ 36 )/* Attrs corresponding to FS_*_FL flags */ 37 #define KSTAT_ATTR_VFS_FLAGS \ 38 (STATX_ATTR_IMMUTABLE | \ 39 STATX_ATTR_APPEND \ 40 ) /* Attrs corresponding to S_* flags that are enforced by the VFS */ 41 u64 ino; 42 dev_t dev; 43 dev_t rdev; 44 kuid_t uid; 45 kgid_t gid; 46 loff_t size; 47 struct timespec64 atime; 48 struct timespec64 mtime; 49 struct timespec64 ctime; 50 struct timespec64 btime; /* File creation time */ 51 u64 blocks; 52 u64 mnt_id; 53 u32 dio_mem_align; 54 u32 dio_offset_align; 55 u64 change_cookie; 56 u64 subvol; 57 u32 atomic_write_unit_min; 58 u32 atomic_write_unit_max; 59 u32 atomic_write_segments_max; 60 }; 61 62 /* These definitions are internal to the kernel for now. Mainly used by nfsd. */ 63 64 /* mask values */ 65 #define STATX_CHANGE_COOKIE 0x40000000U /* Want/got stx_change_attr */ 66 67 /* file attribute values */ 68 #define STATX_ATTR_CHANGE_MONOTONIC 0x8000000000000000ULL /* version monotonically increases */ 69 70 #endif 71