From 526b8347906a18d756386092fafa0b42ba0b4563 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 20 Jun 2021 10:57:24 +0200 Subject: lsattr,chattr: support -p function old new delta fgetsetprojid - 107 +107 list_attributes 169 222 +53 change_attributes 277 326 +49 chattr_main 272 307 +35 close_silently - 22 +22 .rodata 103378 103393 +15 packed_usage 33658 33666 +8 fgetsetversion 88 74 -14 fgetsetflags 162 148 -14 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/2 up/down: 289/-28) Total: 261 bytes Signed-off-by: Denys Vlasenko --- include/bb_e2fs_defs.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'include') diff --git a/include/bb_e2fs_defs.h b/include/bb_e2fs_defs.h index 3f5e3c45b..2d72288ed 100644 --- a/include/bb_e2fs_defs.h +++ b/include/bb_e2fs_defs.h @@ -195,6 +195,18 @@ struct ext2_dx_countlimit { #define EXT2_IOC_SETFLAGS _IOW('f', 2, long) #define EXT2_IOC_GETVERSION _IOR('v', 1, long) #define EXT2_IOC_SETVERSION _IOW('v', 2, long) +//NB: despite "long" in defs above, these ioctls use an _int_! +//passing them a pointer to long will read/write only int-sized data! +struct ext2_fsxattr { + uint32_t fsx_xflags; /* xflags field value (get/set) */ + uint32_t fsx_extsize; /* extsize field value (get/set)*/ + uint32_t fsx_nextents; /* nextents field value (get) */ + uint32_t fsx_projid; /* project identifier (get/set) */ + uint32_t fsx_cowextsize; /* CoW extsize field value (get/set)*/ + unsigned char fsx_pad[8]; +}; +#define EXT2_IOC_FSGETXATTR _IOR('X', 31, struct ext2_fsxattr) +#define EXT2_IOC_FSSETXATTR _IOW('X', 32, struct ext2_fsxattr) /* * Structure of an inode on the disk -- cgit v1.2.3