From: Akira Fujita Subject: [RFC][PATCH 5/9]ext4: Add the EXT4_IOC_SUPER_INFO ioctl Date: Fri, 24 Oct 2008 19:09:51 +0900 Message-ID: <49019EEF.1040608@rs.jp.nec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Cc: linux-fsdevel@vger.kernel.org To: linux-ext4@vger.kernel.org, Theodore Tso , Mingming Cao Return-path: Received: from TYO201.gate.nec.co.jp ([202.32.8.193]:41870 "EHLO tyo201.gate.nec.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753338AbYJXKKP (ORCPT ); Fri, 24 Oct 2008 06:10:15 -0400 Sender: linux-ext4-owner@vger.kernel.org List-ID: ext4: online defrag -- Add the EXT4_IOC_SUPER_INFO ioctl From: Akira Fujita 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 Signed-off-by: Takashi Sato --- fs/ext4/ext4.h | 1 + fs/ext4/ioctl.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index ccea421..94c4186 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -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 diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index d5e1fe7..f8ce89b 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -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;