Actually, I think we need to select one among them, disable, enable and merge. I realized my previous understanding about that was wrong. In that case of "checkpoint=merge,checkpoint=enable", the last option will override the ones before that. This is how the other mount options like fsync_mode, whint_mode and etc. So, the answer will be "checkpoint=enable". What do you think?
2021년 2월 1일 (월) 오후 9:40, Chao Yu <c...@kernel.org>님이 작성: > > On 2021/2/1 8:06, Daeho Jeong wrote: > > 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); > > What if: -o checkpoint=merge,checkpoint=enable > > Can you please explain the rule of merge/disable/enable combination and their > result? e.g. > checkpoint=merge,checkpoint=enable > checkpoint=enable,checkpoint=merge > checkpoint=merge,checkpoint=disable > checkpoint=disable,checkpoint=merge > > If the rule/result is clear, it should be documented. > > Thanks, > > > > 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. > > */ > >