From: Daeho Jeong <daehoje...@google.com> As checkpoint=merge comes in, mount option setting related to checkpoint had been mixed up. Fixed it.
Signed-off-by: Daeho Jeong <daehoje...@google.com> --- fs/f2fs/super.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 56696f6cfa86..8231c888c772 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -930,20 +930,25 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount) return -EINVAL; F2FS_OPTION(sbi).unusable_cap_perc = arg; set_opt(sbi, DISABLE_CHECKPOINT); + clear_opt(sbi, MERGE_CHECKPOINT); break; case Opt_checkpoint_disable_cap: if (args->from && match_int(args, &arg)) return -EINVAL; F2FS_OPTION(sbi).unusable_cap = arg; set_opt(sbi, DISABLE_CHECKPOINT); + clear_opt(sbi, MERGE_CHECKPOINT); break; case Opt_checkpoint_disable: set_opt(sbi, DISABLE_CHECKPOINT); + clear_opt(sbi, MERGE_CHECKPOINT); break; case Opt_checkpoint_enable: clear_opt(sbi, DISABLE_CHECKPOINT); + clear_opt(sbi, MERGE_CHECKPOINT); break; case Opt_checkpoint_merge: + clear_opt(sbi, DISABLE_CHECKPOINT); set_opt(sbi, MERGE_CHECKPOINT); break; #ifdef CONFIG_F2FS_FS_COMPRESSION @@ -1142,12 +1147,6 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount) return -EINVAL; } - if (test_opt(sbi, DISABLE_CHECKPOINT) && - test_opt(sbi, MERGE_CHECKPOINT)) { - f2fs_err(sbi, "checkpoint=merge cannot be used with checkpoint=disable\n"); - return -EINVAL; - } - /* Not pass down write hints if the number of active logs is lesser * than NR_CURSEG_PERSIST_TYPE. */ -- 2.30.0.365.g02bc693789-goog