f2fs: Use a folio in is_alive()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:11:42 +0000 (21:11 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:37 +0000 (15:26 +0000)
Remove four calls to compound_head().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/gc.c

index bfbda0fd6ac9e8589e45dd7ed61bfd1a15b85e7f..a419f6621d5e3dd4dd9ac353f247ff73807e71db 100644 (file)
@@ -1134,7 +1134,7 @@ block_t f2fs_start_bidx_of_node(unsigned int node_ofs, struct inode *inode)
 static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
                struct node_info *dni, block_t blkaddr, unsigned int *nofs)
 {
-       struct page *node_page;
+       struct folio *node_folio;
        nid_t nid;
        unsigned int ofs_in_node, max_addrs, base;
        block_t source_blkaddr;
@@ -1142,12 +1142,12 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
        nid = le32_to_cpu(sum->nid);
        ofs_in_node = le16_to_cpu(sum->ofs_in_node);
 
-       node_page = f2fs_get_node_page(sbi, nid);
-       if (IS_ERR(node_page))
+       node_folio = f2fs_get_node_folio(sbi, nid);
+       if (IS_ERR(node_folio))
                return false;
 
        if (f2fs_get_node_info(sbi, nid, dni, false)) {
-               f2fs_put_page(node_page, 1);
+               f2fs_folio_put(node_folio, true);
                return false;
        }
 
@@ -1158,12 +1158,12 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
        }
 
        if (f2fs_check_nid_range(sbi, dni->ino)) {
-               f2fs_put_page(node_page, 1);
+               f2fs_folio_put(node_folio, true);
                return false;
        }
 
-       if (IS_INODE(node_page)) {
-               base = offset_in_addr(F2FS_INODE(node_page));
+       if (IS_INODE(&node_folio->page)) {
+               base = offset_in_addr(F2FS_INODE(&node_folio->page));
                max_addrs = DEF_ADDRS_PER_INODE;
        } else {
                base = 0;
@@ -1173,13 +1173,13 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
        if (base + ofs_in_node >= max_addrs) {
                f2fs_err(sbi, "Inconsistent blkaddr offset: base:%u, ofs_in_node:%u, max:%u, ino:%u, nid:%u",
                        base, ofs_in_node, max_addrs, dni->ino, dni->nid);
-               f2fs_put_page(node_page, 1);
+               f2fs_folio_put(node_folio, true);
                return false;
        }
 
-       *nofs = ofs_of_node(node_page);
-       source_blkaddr = data_blkaddr(NULL, node_page, ofs_in_node);
-       f2fs_put_page(node_page, 1);
+       *nofs = ofs_of_node(&node_folio->page);
+       source_blkaddr = data_blkaddr(NULL, &node_folio->page, ofs_in_node);
+       f2fs_folio_put(node_folio, true);
 
        if (source_blkaddr != blkaddr) {
 #ifdef CONFIG_F2FS_CHECK_FS