diff options
-rw-r--r-- | fs/btrfs/super.c | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index b9e08a59da4e..d977d2da985e 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2046,15 +2046,7 @@ static int btrfs_get_tree_subvol(struct fs_context *fc) */ dup_fc->s_fs_info = fs_info; - /* - * We'll do the security settings in our btrfs_get_tree_super() mount - * loop, they were duplicated into dup_fc, we can drop the originals - * here. - */ - security_free_mnt_opts(&fc->security); - fc->security = NULL; - - ret = vfs_get_tree(dup_fc); + ret = btrfs_get_tree_super(dup_fc); if (ret) goto error; @@ -2086,21 +2078,8 @@ error: static int btrfs_get_tree(struct fs_context *fc) { - /* - * Since we use mount_subtree to mount the default/specified subvol, we - * have to do mounts in two steps. - * - * First pass through we call btrfs_get_tree_subvol(), this is just a - * wrapper around fc_mount() to call back into here again, and this time - * we'll call btrfs_get_tree_super(). This will do the open_ctree() and - * everything to open the devices and file system. Then we return back - * with a fully constructed vfsmount in btrfs_get_tree_subvol(), and - * from there we can do our mount_subvol() call, which will lookup - * whichever subvol we're mounting and setup this fc with the - * appropriate dentry for the subvol. - */ - if (fc->s_fs_info) - return btrfs_get_tree_super(fc); + ASSERT(fc->s_fs_info == NULL); + return btrfs_get_tree_subvol(fc); } |