btrfs: unify the ro checking for mount options
We're going to be adding more options that require RDONLY, so add a helper to do the check and error out if we don't have RDONLY set. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Родитель
a6889caf6e
Коммит
d70bf7484f
|
@ -458,6 +458,17 @@ static const match_table_t rescue_tokens = {
|
|||
{Opt_err, NULL},
|
||||
};
|
||||
|
||||
static bool check_ro_option(struct btrfs_fs_info *fs_info, unsigned long opt,
|
||||
const char *opt_name)
|
||||
{
|
||||
if (fs_info->mount_opt & opt) {
|
||||
btrfs_err(fs_info, "%s must be used with ro mount option",
|
||||
opt_name);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static int parse_rescue_options(struct btrfs_fs_info *info, const char *options)
|
||||
{
|
||||
char *opts;
|
||||
|
@ -968,14 +979,12 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,
|
|||
}
|
||||
}
|
||||
check:
|
||||
/*
|
||||
* Extra check for current option against current flag
|
||||
*/
|
||||
if (btrfs_test_opt(info, NOLOGREPLAY) && !(new_flags & SB_RDONLY)) {
|
||||
btrfs_err(info,
|
||||
"nologreplay must be used with ro mount option");
|
||||
/* We're read-only, don't have to check. */
|
||||
if (new_flags & SB_RDONLY)
|
||||
goto out;
|
||||
|
||||
if (check_ro_option(info, BTRFS_MOUNT_NOLOGREPLAY, "nologreplay"))
|
||||
ret = -EINVAL;
|
||||
}
|
||||
out:
|
||||
if (btrfs_fs_compat_ro(info, FREE_SPACE_TREE) &&
|
||||
!btrfs_test_opt(info, FREE_SPACE_TREE) &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче