On 11/8/25 11:11, Chao Yu via Linux-f2fs-devel wrote:
Yunlei,

On 2025/11/7 14:29, Yunlei He wrote:
From: Yunlei He <[email protected]>

GC move fbe data block will add some non uptodate page, we'd
better release it at the end.

This is just for saving memory, right?


Yes, move_data_block() doesn’t read any data to folio, and the GC
usually selects cold data. Therefore, this folio is typically not
uptodate, and there’s no need for it to occupy the page cache.


Signed-off-by: Yunlei He <[email protected]>
Signed-off-by: Yongpeng Yang <[email protected]>
---
  fs/f2fs/gc.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 8abf521530ff..09b65e6ea853 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -1315,6 +1315,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
      struct node_info ni;
      struct folio *folio, *mfolio;
      block_t newaddr;
+    bool need_invalidate = true;
      int err = 0;
      bool lfs_mode = f2fs_lfs_mode(fio.sbi);
      int type = fio.sbi->am.atgc_enabled && (gc_type == BG_GC) &&
@@ -1450,7 +1451,11 @@ static int move_data_block(struct inode *inode, block_t bidx,
  put_out:
      f2fs_put_dnode(&dn);
  out:
+    if (folio_test_uptodate(folio))
+        need_invalidate = false;

How about dropping such folio under its lock?

if (!folio_test_uptodate())
     truncate_inode_partial_folio()


truncate_inode_partial_folio() is more efficient since it avoids looking
up the folio again, but it’s declared in mm/internal.h, so it cannot be
called directly.

Yongpeng,

      f2fs_folio_put(folio, true);
+    if (need_invalidate)
+        invalidate_mapping_pages(mapping, bidx, bidx);
      return err;
  }



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to