Re: [f2fs-dev] [PATCH] f2fs: avoid unneeded preflush during checkpoint()

From: Chao Yu
Date: Tue Feb 08 2022 - 04:18:14 EST


On 2022/2/8 9:35, Chao Yu wrote:
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.

Wrong comments, let's ignore this patch, sorry.

Thanks,


    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@xxxxxxxxxx>
---
  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


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel