diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-05-06 16:43:07 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-12 03:36:08 +0200 |
commit | bbd6851a3213a525128473e978b692ab6ac11aba (patch) | |
tree | 8ebddebadd8992871ab98456187cb00849a82058 /fs/sysv/inode.c | |
parent | push BKL down into ->put_super (diff) | |
download | linux-bbd6851a3213a525128473e978b692ab6ac11aba.tar.xz linux-bbd6851a3213a525128473e978b692ab6ac11aba.zip |
Push lock_super() into the ->remount_fs() of filesystems that care about it
Note that since we can't run into contention between remount_fs and write_super
(due to exclusion on s_umount), we have to care only about filesystems that
touch lock_super() on their own. Out of those ext3, ext4, hpfs, sysv and ufs
do need it; fat doesn't since its ->remount_fs() only accesses assign-once
data (basically, it's "we have no atime on directories and only have atime on
files for vfat; force nodiratime and possibly noatime into *flags").
[folded a build fix from hch]
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/sysv/inode.c')
-rw-r--r-- | fs/sysv/inode.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c index a8189864c241..e0a39f1fb88e 100644 --- a/fs/sysv/inode.c +++ b/fs/sysv/inode.c @@ -61,10 +61,12 @@ clean: static int sysv_remount(struct super_block *sb, int *flags, char *data) { struct sysv_sb_info *sbi = SYSV_SB(sb); + lock_super(sb); if (sbi->s_forced_ro) *flags |= MS_RDONLY; if (!(*flags & MS_RDONLY)) sb->s_dirt = 1; + unlock_super(sb); return 0; } |