On Tue, Aug 01, 2023 at 03:09:01PM +0200, Christian Brauner wrote: > Split the steps to create a superblock into a tiny helper. This will > make the next patch easier to follow. > > Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> > --- > fs/fsopen.c | 45 +++++++++++++++++++++++++++++++-------------- > 1 file changed, 31 insertions(+), 14 deletions(-) > > diff --git a/fs/fsopen.c b/fs/fsopen.c > index fc9d2d9fd234..af2ff05dcee5 100644 > --- a/fs/fsopen.c > +++ b/fs/fsopen.c > @@ -209,6 +209,36 @@ SYSCALL_DEFINE3(fspick, int, dfd, const char __user *, path, unsigned int, flags > return ret; > } > > +static int vfs_cmd_create(struct fs_context *fc) > +{ > + struct super_block *sb; > + int ret; > + > + if (fc->phase != FS_CONTEXT_CREATE_PARAMS) > + return -EBUSY; > + > + if (!mount_capable(fc)) > + return -EPERM; > + > + fc->phase = FS_CONTEXT_CREATING; > + > + ret = vfs_get_tree(fc); > + if (ret) > + return ret; The error handling here now fails to set FS_CONTEXT_FAILED. Also at a very minimum I'd also want a helper for the reconfigure case to mirror this one. But I think the whole sys_fsconfig and vfs_fsconfig_locked combination is a complete and utter mess and should be split into one top-level handler by cmd with a bunch of shared helper instead of this spaghetti code.