Messages in this thread Patch in this message | | | Date | Tue, 8 Feb 2022 09:35:29 +0800 | Subject | Re: [PATCH] f2fs: avoid unneeded preflush during checkpoint() | From | Chao Yu <> |
| |
On 2022/2/8 3:14, Jaegeuk Kim wrote: > On 02/07, Chao Yu wrote: >> During checkpoint, we have committed preflush command via f2fs_flush_device_cache() > > 787 int f2fs_flush_device_cache(struct f2fs_sb_info *sbi) > 788 { > 789 int ret = 0, i; > 790 > 791 if (!f2fs_is_multi_device(sbi)) > 792 return 0; > > Seems a wrong assumption.
Oh, I missed that f2fs_flush_device_cache was introduced to flush devices except first device when multi-device feature is on.
for (i = 1; i < sbi->s_ndevs; i++) { int count = DEFAULT_RETRY_IO_COUNT;
So, this patch seems wrong...
Instead, below case looks wrong since it needs to trigger flush during checkpoint() no matter nobarrier is on or off.
if (test_opt(sbi, NOBARRIER)) return 0;
Thanks,
> >> to persist all metadata pages except last #2 CP pack page, so we don't need to >> commit another preflush command in commit_checkpoint(), remove it to avoid unneeded >> write cache overhead. >> >> Signed-off-by: Chao Yu <chao@kernel.org> >> --- >> fs/f2fs/data.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c >> index 8c417864c66a..15ac18bbbc8e 100644 >> --- a/fs/f2fs/data.c >> +++ b/fs/f2fs/data.c >> @@ -598,7 +598,7 @@ static void __f2fs_submit_merged_write(struct f2fs_sb_info *sbi, >> io->fio.op = REQ_OP_WRITE; >> io->fio.op_flags = REQ_META | REQ_PRIO | REQ_SYNC; >> if (!test_opt(sbi, NOBARRIER)) >> - io->fio.op_flags |= REQ_PREFLUSH | REQ_FUA; >> + io->fio.op_flags |= REQ_FUA; >> } >> __submit_merged_bio(io); >> up_write(&io->io_rwsem); >> -- >> 2.32.0
| |