]> www.infradead.org Git - nvme.git/commitdiff
bcachefs: Kill bch2_mount()
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 29 May 2024 17:38:06 +0000 (13:38 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 14 Jul 2024 23:00:14 +0000 (19:00 -0400)
Fold into bch2_fs_get_tree()

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fs.c

index 6a92c0d434d9249637c8fb296e67526d9fc1ec4d..7bcf79406103106735ee10b31115b3042a8f17d7 100644 (file)
@@ -1888,25 +1888,24 @@ static int bch2_test_super(struct super_block *s, void *data)
        return true;
 }
 
-static struct dentry *bch2_mount(struct file_system_type *fs_type,
-                                int flags, const char *dev_name,
-                                struct bch2_opts_parse opts_parse)
+static int bch2_fs_get_tree(struct fs_context *fc)
 {
        struct bch_fs *c;
        struct super_block *sb;
        struct inode *vinode;
-       struct bch_opts opts = opts_parse.opts;
+       struct bch2_opts_parse *opts_parse = fc->fs_private;
+       struct bch_opts opts = opts_parse->opts;
        int ret;
 
-       opt_set(opts, read_only, (flags & SB_RDONLY) != 0);
+       opt_set(opts, read_only, (fc->sb_flags & SB_RDONLY) != 0);
 
-       if (!dev_name || strlen(dev_name) == 0)
-               return ERR_PTR(-EINVAL);
+       if (!fc->source || strlen(fc->source) == 0)
+               return -EINVAL;
 
        darray_str devs;
-       ret = bch2_split_devs(dev_name, &devs);
+       ret = bch2_split_devs(fc->source, &devs);
        if (ret)
-               return ERR_PTR(ret);
+               return ret;
 
        darray_fs devs_to_fs = {};
        darray_for_each(devs, i) {
@@ -1917,7 +1916,7 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
                }
        }
 
-       sb = sget(fs_type, bch2_test_super, bch2_noset_super, flags|SB_NOSEC, &devs_to_fs);
+       sb = sget(fc->fs_type, bch2_test_super, bch2_noset_super, fc->sb_flags|SB_NOSEC, &devs_to_fs);
        if (!IS_ERR(sb))
                goto got_sb;
 
@@ -1928,7 +1927,7 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
        }
 
        /* Some options can't be parsed until after the fs is started: */
-       ret = bch2_parse_mount_opts(c, &opts, NULL, opts_parse.parse_later.buf);
+       ret = bch2_parse_mount_opts(c, &opts, NULL, opts_parse->parse_later.buf);
        if (ret) {
                bch2_fs_stop(c);
                sb = ERR_PTR(ret);
@@ -1937,7 +1936,7 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
 
        bch2_opts_apply(&c->opts, opts);
 
-       sb = sget(fs_type, NULL, bch2_set_super, flags|SB_NOSEC, c);
+       sb = sget(fc->fs_type, NULL, bch2_set_super, fc->sb_flags|SB_NOSEC, c);
        if (IS_ERR(sb))
                bch2_fs_stop(c);
 got_sb:
@@ -1952,7 +1951,7 @@ got_sb:
        c = sb->s_fs_info;
 
        if (sb->s_root) {
-               if ((flags ^ sb->s_flags) & SB_RDONLY) {
+               if ((fc->sb_flags ^ sb->s_flags) & SB_RDONLY) {
                        ret = -EBUSY;
                        goto err_put_super;
                }
@@ -2018,7 +2017,8 @@ got_sb:
 
        sb->s_flags |= SB_ACTIVE;
 out:
-       return dget(sb->s_root);
+       fc->root = dget(sb->s_root);
+       return 0;
 
 err_put_super:
        __bch2_fs_stop(c);
@@ -2034,7 +2034,7 @@ err:
         */
        if (bch2_err_matches(ret, EROFS) && ret != -EROFS)
                ret = -EIO;
-       return ERR_PTR(bch2_err_class(ret));
+       return bch2_err_class(ret);
 }
 
 static void bch2_kill_sb(struct super_block *sb)
@@ -2079,22 +2079,6 @@ static int bch2_fs_parse_param(struct fs_context *fc,
        return bch2_err_class(ret);
 }
 
-static int bch2_fs_get_tree(struct fs_context *fc)
-{
-       struct bch2_opts_parse *opts = fc->fs_private;
-       const char *dev_name = fc->source;
-       struct dentry *root;
-
-       root = bch2_mount(fc->fs_type, fc->sb_flags, dev_name, *opts);
-
-       if (IS_ERR(root))
-               return PTR_ERR(root);
-
-       fc->root = root;
-
-       return 0;
-}
-
 static int bch2_fs_reconfigure(struct fs_context *fc)
 {
        struct super_block *sb = fc->root->d_sb;