From 45fa786675e3ebec9b5e842dfaa190570a255661 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 17 Nov 2011 01:56:28 -0500 Subject: [PATCH] --- yaml --- r: 286029 b: refs/heads/master c: 59553edf110e5576d91be9dd5bd53d110e0d0290 h: refs/heads/master i: 286027: 300b06615bfaf85a3cf5804fbc1109265d32e652 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/super.c | 21 +++++---------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/[refs] b/[refs] index 396b8add0f66..10db31deba54 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d22ca7de770e2a683eac000ba4db5a95e2f4c969 +refs/heads/master: 59553edf110e5576d91be9dd5bd53d110e0d0290 diff --git a/trunk/fs/btrfs/super.c b/trunk/fs/btrfs/super.c index f628a6a79ca6..15c8ae571e40 100644 --- a/trunk/fs/btrfs/super.c +++ b/trunk/fs/btrfs/super.c @@ -630,6 +630,7 @@ static int btrfs_fill_super(struct super_block *sb, save_mount_options(sb, data); cleancache_init_fs(sb); + sb->s_flags |= MS_ACTIVE; return 0; fail_close: @@ -929,14 +930,10 @@ static struct dentry *btrfs_mount(struct file_system_type *fs_type, int flags, } if (s->s_root) { - if ((flags ^ s->s_flags) & MS_RDONLY) { - deactivate_locked_super(s); - error = -EBUSY; - goto error_close_devices; - } - btrfs_close_devices(fs_devices); free_fs_info(fs_info); + if ((flags ^ s->s_flags) & MS_RDONLY) + error = -EBUSY; } else { char b[BDEVNAME_SIZE]; @@ -945,19 +942,11 @@ static struct dentry *btrfs_mount(struct file_system_type *fs_type, int flags, btrfs_sb(s)->fs_info->bdev_holder = fs_type; error = btrfs_fill_super(s, fs_devices, data, flags & MS_SILENT ? 1 : 0); - if (error) { - deactivate_locked_super(s); - return ERR_PTR(error); - } - - s->s_flags |= MS_ACTIVE; } - root = get_default_root(s, subvol_objectid); - if (IS_ERR(root)) { + root = !error ? get_default_root(s, subvol_objectid) : ERR_PTR(error); + if (IS_ERR(root)) deactivate_locked_super(s); - return root; - } return root;