summaryrefslogtreecommitdiffstats
path: root/fs/ext3/ioctl.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2007-05-08 00:30:33 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 11:15:12 -0700
commit28be5abb400e5e082f5225105fdc69337ec0c0b4 (patch)
treee4bb3e527aac316004be68e28a25b2919e30afd4 /fs/ext3/ioctl.c
parent9926e4c74300c4b31dee007298c6475d33369df0 (diff)
downloadlinux-28be5abb400e5e082f5225105fdc69337ec0c0b4.tar.bz2
ext3: copy i_flags to inode flags on write
A patch that stores inode flags such as S_IMMUTABLE, S_APPEND, etc. from i_flags to EXT3_I(inode)->i_flags when inode is written to disk. The same thing is done on GETFLAGS ioctl. Quota code changes these flags on quota files (to make it harder for sysadmin to screw himself) and these changes were not correctly propagated into the filesystem (especially, lsattr did not show them and users were wondering...). Propagate flags such as S_APPEND, S_IMMUTABLE, etc. from i_flags into ext3-specific i_flags. Hence, when someone sets these flags via a different interface than ioctl, they are stored correctly. Signed-off-by: Jan Kara <jack@suse.cz> Cc: <linux-ext4@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ext3/ioctl.c')
-rw-r--r--fs/ext3/ioctl.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
index 9b8090d94e6c..965006dba6be 100644
--- a/fs/ext3/ioctl.c
+++ b/fs/ext3/ioctl.c
@@ -28,6 +28,7 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
switch (cmd) {
case EXT3_IOC_GETFLAGS:
+ ext3_get_inode_flags(ei);
flags = ei->i_flags & EXT3_FL_USER_VISIBLE;
return put_user(flags, (int __user *) arg);
case EXT3_IOC_SETFLAGS: {