ovl: change order of setup in ovl_fill_super()
Move ovl_get_upper() immediately after ovl_get_upperpath(), ovl_get_workdir() immediately after ovl_get_workdir() and ovl_get_lower_layers() immediately after ovl_get_lowerstack(). Also move prepare_creds() up to where other allocations are happening. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
a9075cdb46
commit
c6fe625493
|
@ -1151,6 +1151,10 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
if (!ufs)
|
if (!ufs)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
ufs->creator_cred = cred = prepare_creds();
|
||||||
|
if (!cred)
|
||||||
|
goto out_err;
|
||||||
|
|
||||||
ufs->config.redirect_dir = ovl_redirect_dir_def;
|
ufs->config.redirect_dir = ovl_redirect_dir_def;
|
||||||
ufs->config.index = ovl_index_def;
|
ufs->config.index = ovl_index_def;
|
||||||
err = ovl_parse_opt((char *) data, &ufs->config);
|
err = ovl_parse_opt((char *) data, &ufs->config);
|
||||||
|
@ -1176,27 +1180,25 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
if (err)
|
if (err)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
err = ovl_get_workpath(ufs, &upperpath, &workpath);
|
|
||||||
if (err)
|
|
||||||
goto out_err;
|
|
||||||
|
|
||||||
sb->s_stack_depth = upperpath.mnt->mnt_sb->s_stack_depth;
|
|
||||||
}
|
|
||||||
err = ovl_get_lowerstack(sb, ufs, &stack, &numlower);
|
|
||||||
if (err)
|
|
||||||
goto out_err;
|
|
||||||
|
|
||||||
if (ufs->config.upperdir) {
|
|
||||||
err = ovl_get_upper(ufs, &upperpath);
|
err = ovl_get_upper(ufs, &upperpath);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
sb->s_time_gran = ufs->upper_mnt->mnt_sb->s_time_gran;
|
err = ovl_get_workpath(ufs, &upperpath, &workpath);
|
||||||
|
if (err)
|
||||||
|
goto out_err;
|
||||||
|
|
||||||
err = ovl_get_workdir(sb, ufs, &workpath);
|
err = ovl_get_workdir(sb, ufs, &workpath);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
|
sb->s_stack_depth = ufs->upper_mnt->mnt_sb->s_stack_depth;
|
||||||
|
sb->s_time_gran = ufs->upper_mnt->mnt_sb->s_time_gran;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
err = ovl_get_lowerstack(sb, ufs, &stack, &numlower);
|
||||||
|
if (err)
|
||||||
|
goto out_err;
|
||||||
|
|
||||||
err = ovl_get_lower_layers(ufs, stack, numlower);
|
err = ovl_get_lower_layers(ufs, stack, numlower);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -1228,11 +1230,6 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
if (!ufs->indexdir)
|
if (!ufs->indexdir)
|
||||||
ufs->config.index = false;
|
ufs->config.index = false;
|
||||||
|
|
||||||
err = -ENOMEM;
|
|
||||||
ufs->creator_cred = cred = prepare_creds();
|
|
||||||
if (!cred)
|
|
||||||
goto out_err;
|
|
||||||
|
|
||||||
/* Never override disk quota limits or use reserved space */
|
/* Never override disk quota limits or use reserved space */
|
||||||
cap_lower(cred->cap_effective, CAP_SYS_RESOURCE);
|
cap_lower(cred->cap_effective, CAP_SYS_RESOURCE);
|
||||||
|
|
||||||
|
@ -1242,6 +1239,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
sb->s_fs_info = ufs;
|
sb->s_fs_info = ufs;
|
||||||
sb->s_flags |= MS_POSIXACL | MS_NOREMOTELOCK;
|
sb->s_flags |= MS_POSIXACL | MS_NOREMOTELOCK;
|
||||||
|
|
||||||
|
err = -ENOMEM;
|
||||||
root_dentry = d_make_root(ovl_new_inode(sb, S_IFDIR, 0));
|
root_dentry = d_make_root(ovl_new_inode(sb, S_IFDIR, 0));
|
||||||
if (!root_dentry)
|
if (!root_dentry)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
Loading…
Reference in New Issue