ext4: add FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface support
This patch adds FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR ioctl interface support for ext4. The interface is kept consistent with XFS_IOC_FSGETXATTR/XFS_IOC_FSGETXATTR. Signed-off-by: Li Xi <lixi@ddn.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Andreas Dilger <adilger@dilger.ca> Reviewed-by: Jan Kara <jack@suse.cz>
这个提交包含在:
@@ -381,6 +381,13 @@ struct flex_groups {
|
||||
#define EXT4_FL_USER_VISIBLE 0x304BDFFF /* User visible flags */
|
||||
#define EXT4_FL_USER_MODIFIABLE 0x204380FF /* User modifiable flags */
|
||||
|
||||
#define EXT4_FL_XFLAG_VISIBLE (EXT4_SYNC_FL | \
|
||||
EXT4_IMMUTABLE_FL | \
|
||||
EXT4_APPEND_FL | \
|
||||
EXT4_NODUMP_FL | \
|
||||
EXT4_NOATIME_FL | \
|
||||
EXT4_PROJINHERIT_FL)
|
||||
|
||||
/* Flags that should be inherited by new inodes from their parent. */
|
||||
#define EXT4_FL_INHERITED (EXT4_SECRM_FL | EXT4_UNRM_FL | EXT4_COMPR_FL |\
|
||||
EXT4_SYNC_FL | EXT4_NODUMP_FL | EXT4_NOATIME_FL |\
|
||||
@@ -619,6 +626,46 @@ enum {
|
||||
#define EXT4_IOC_GET_ENCRYPTION_PWSALT _IOW('f', 20, __u8[16])
|
||||
#define EXT4_IOC_GET_ENCRYPTION_POLICY _IOW('f', 21, struct ext4_encryption_policy)
|
||||
|
||||
#ifndef FS_IOC_FSGETXATTR
|
||||
/* Until the uapi changes get merged for project quota... */
|
||||
|
||||
#define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr)
|
||||
#define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
|
||||
|
||||
/*
|
||||
* Structure for FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR.
|
||||
*/
|
||||
struct fsxattr {
|
||||
__u32 fsx_xflags; /* xflags field value (get/set) */
|
||||
__u32 fsx_extsize; /* extsize field value (get/set)*/
|
||||
__u32 fsx_nextents; /* nextents field value (get) */
|
||||
__u32 fsx_projid; /* project identifier (get/set) */
|
||||
unsigned char fsx_pad[12];
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags for the fsx_xflags field
|
||||
*/
|
||||
#define FS_XFLAG_REALTIME 0x00000001 /* data in realtime volume */
|
||||
#define FS_XFLAG_PREALLOC 0x00000002 /* preallocated file extents */
|
||||
#define FS_XFLAG_IMMUTABLE 0x00000008 /* file cannot be modified */
|
||||
#define FS_XFLAG_APPEND 0x00000010 /* all writes append */
|
||||
#define FS_XFLAG_SYNC 0x00000020 /* all writes synchronous */
|
||||
#define FS_XFLAG_NOATIME 0x00000040 /* do not update access time */
|
||||
#define FS_XFLAG_NODUMP 0x00000080 /* do not include in backups */
|
||||
#define FS_XFLAG_RTINHERIT 0x00000100 /* create with rt bit set */
|
||||
#define FS_XFLAG_PROJINHERIT 0x00000200 /* create with parents projid */
|
||||
#define FS_XFLAG_NOSYMLINKS 0x00000400 /* disallow symlink creation */
|
||||
#define FS_XFLAG_EXTSIZE 0x00000800 /* extent size allocator hint */
|
||||
#define FS_XFLAG_EXTSZINHERIT 0x00001000 /* inherit inode extent size */
|
||||
#define FS_XFLAG_NODEFRAG 0x00002000 /* do not defragment */
|
||||
#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
|
||||
#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
|
||||
#endif /* !defined(FS_IOC_FSGETXATTR) */
|
||||
|
||||
#define EXT4_IOC_FSGETXATTR FS_IOC_FSGETXATTR
|
||||
#define EXT4_IOC_FSSETXATTR FS_IOC_FSSETXATTR
|
||||
|
||||
#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
|
||||
/*
|
||||
* ioctl commands in 32 bit emulation
|
||||
|
在新工单中引用
屏蔽一个用户