From: Kent Overstreet Date: Wed, 26 Feb 2025 03:14:06 +0000 (-0500) Subject: bcachefs: Make sure c->vfs_sb is set before starting fs X-Git-Tag: v6.15-rc1~146^2~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1fdbe0b184c8;p=thirdparty%2Flinux.git bcachefs: Make sure c->vfs_sb is set before starting fs This is necessary for the new blk_holder_ops, which want the vfs super_block available for synchronization. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c index 2c011a4655885..459ca8259fc02 100644 --- a/fs/bcachefs/fs.c +++ b/fs/bcachefs/fs.c @@ -2218,9 +2218,10 @@ static int bch2_fs_get_tree(struct fs_context *fc) bch2_opts_apply(&c->opts, opts); - ret = bch2_fs_start(c); - if (ret) - goto err_stop_fs; + /* + * need to initialise sb and set c->vfs_sb _before_ starting fs, + * for blk_holder_ops + */ sb = sget(fc->fs_type, NULL, bch2_set_super, fc->sb_flags|SB_NOSEC, c); ret = PTR_ERR_OR_ZERO(sb); @@ -2282,6 +2283,10 @@ got_sb: sb->s_shrink->seeks = 0; + ret = bch2_fs_start(c); + if (ret) + goto err_put_super; + vinode = bch2_vfs_inode_get(c, BCACHEFS_ROOT_SUBVOL_INUM); ret = PTR_ERR_OR_ZERO(vinode); bch_err_msg(c, ret, "mounting: error getting root inode");