Messages in this thread | | | Subject | Re: [f2fs-dev] [PATCH] f2fs: fix checkpoint mount option wrong combination | From | Chao Yu <> | Date | Tue, 2 Feb 2021 09:28:59 +0800 |
| |
On 2021/2/1 21:11, Daeho Jeong wrote: > Actually, I think we need to select one among them, disable, enable > and merge. I realized my previous understanding about that was wrong.
Actually, 1. chekcpoint=enable/disable decide whether we will allow checkpoint 2. checkpoint=merge or not decide how we issue checkpoint
They are different, we should not only select only one of them, the combination of them is allowed.
Thanks,
> 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 <chao@kernel.org>님이 작성: >> >> On 2021/2/1 8:06, Daeho Jeong wrote: >>> From: Daeho Jeong <daehojeong@google.com> >>> >>> As checkpoint=merge comes in, mount option setting related to >>> checkpoint had been mixed up. Fixed it. >>> >>> Signed-off-by: Daeho Jeong <daehojeong@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. >>> */ >>> > > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel >
| |