mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
introduce fs_context methods
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
36
fs/super.c
36
fs/super.c
@@ -894,13 +894,15 @@ int reconfigure_super(struct fs_context *fc)
|
||||
}
|
||||
}
|
||||
|
||||
retval = legacy_reconfigure(fc);
|
||||
if (retval) {
|
||||
if (!force)
|
||||
goto cancel_readonly;
|
||||
/* If forced remount, go ahead despite any errors */
|
||||
WARN(1, "forced remount of a %s fs returned %i\n",
|
||||
sb->s_type->name, retval);
|
||||
if (fc->ops->reconfigure) {
|
||||
retval = fc->ops->reconfigure(fc);
|
||||
if (retval) {
|
||||
if (!force)
|
||||
goto cancel_readonly;
|
||||
/* If forced remount, go ahead despite any errors */
|
||||
WARN(1, "forced remount of a %s fs returned %i\n",
|
||||
sb->s_type->name, retval);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_ONCE(sb->s_flags, ((sb->s_flags & ~fc->sb_flags_mask) |
|
||||
@@ -1294,10 +1296,28 @@ int vfs_get_tree(struct fs_context *fc)
|
||||
struct super_block *sb;
|
||||
int error;
|
||||
|
||||
error = legacy_get_tree(fc);
|
||||
if (fc->fs_type->fs_flags & FS_REQUIRES_DEV && !fc->source)
|
||||
return -ENOENT;
|
||||
|
||||
if (fc->root)
|
||||
return -EBUSY;
|
||||
|
||||
/* Get the mountable root in fc->root, with a ref on the root and a ref
|
||||
* on the superblock.
|
||||
*/
|
||||
error = fc->ops->get_tree(fc);
|
||||
if (error < 0)
|
||||
return error;
|
||||
|
||||
if (!fc->root) {
|
||||
pr_err("Filesystem %s get_tree() didn't set fc->root\n",
|
||||
fc->fs_type->name);
|
||||
/* We don't know what the locking state of the superblock is -
|
||||
* if there is a superblock.
|
||||
*/
|
||||
BUG();
|
||||
}
|
||||
|
||||
sb = fc->root->d_sb;
|
||||
WARN_ON(!sb->s_bdi);
|
||||
|
||||
|
Reference in New Issue
Block a user