mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
bcachefs: Kill bch2_mount()
Fold into bch2_fs_get_tree() Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
b9efa9673e
commit
25ee25e637
@ -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 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
|
||||
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 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
|
||||
|
||||
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 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
|
||||
*/
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user