ext4: Add the EXT4_IOC_SUPER_INFO ioctl
Subsystems (2)
RFC PATCH 5/9 ext4: Add the EXT4_IOC_SUPER_INFO ioctl
ext4: online defrag -- Add the EXT4_IOC_SUPER_INFO ioctl
From: Akira Fujita <[email protected]>
EXT4_IOC_SUPER_INFO gets super block information on disk.
Super block information is necessary for relevant (-r) and force (-f) defrag. Non-root user can't get this information by opening the block device directly, so implement this ioctl newly.
Signed-off-by Akira Fujita <[email protected]>
Signed-off-by Takashi Sato <[email protected]>
--- fs/ext4/ext4.h | 1 +
fs/ext4/ioctl.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 0 deletions(-)
fs/ext4/ext4.h +1 -0
@@ -303,6 +303,7 @@ struct ext4_new_group_data {#define EXT4_IOC_MIGRATE _IO('f', 9)/* note ioctl 11 reserved for filesystem-independent FIEMAP ioctl */ #define EXT4_IOC_DEFRAG _IOW('f', 15, struct ext4_ext_defrag_data) +#define EXT4_IOC_SUPER_INFO _IOR('f', 16, struct ext4_super_block)/* * ioctl commands in 32 bit emulation
fs/ext4/ioctl.c +10 -0
@@ -246,6 +246,16 @@ setversion_out:return err; } +case EXT4_IOC_SUPER_INFO : { +struct ext4_super_block es; + +if (copy_to_user ((struct ext4_super_block __user *)arg, +EXT4_SB (inode->i_sb)->s_es,sizeof (es))) +return -EFAULT ; +else +return 0 ; + } +case EXT4_IOC_GROUP_ADD : {struct ext4_new_group_data input;struct super_block *sb = inode->i_sb;