]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
f2fs: Use folios in truncate_partial_nodes()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:11:37 +0000 (21:11 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:37 +0000 (15:26 +0000)
Removes two 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/node.c

index 086fc58aa8000469ac307a669b435f5264ddfb28..588c6d6fb9346b2bb3841a6a5c0b8b116ce3cd36 100644 (file)
@@ -1063,7 +1063,7 @@ out_err:
 static int truncate_partial_nodes(struct dnode_of_data *dn,
                        struct f2fs_inode *ri, int *offset, int depth)
 {
-       struct page *pages[2];
+       struct folio *folios[2];
        nid_t nid[3];
        nid_t child_nid;
        int err = 0;
@@ -1077,45 +1077,45 @@ static int truncate_partial_nodes(struct dnode_of_data *dn,
        /* get indirect nodes in the path */
        for (i = 0; i < idx + 1; i++) {
                /* reference count'll be increased */
-               pages[i] = f2fs_get_node_page(F2FS_I_SB(dn->inode), nid[i]);
-               if (IS_ERR(pages[i])) {
-                       err = PTR_ERR(pages[i]);
+               folios[i] = f2fs_get_node_folio(F2FS_I_SB(dn->inode), nid[i]);
+               if (IS_ERR(folios[i])) {
+                       err = PTR_ERR(folios[i]);
                        idx = i - 1;
                        goto fail;
                }
-               nid[i + 1] = get_nid(pages[i], offset[i + 1], false);
+               nid[i + 1] = get_nid(&folios[i]->page, offset[i + 1], false);
        }
 
-       f2fs_ra_node_pages(pages[idx], offset[idx + 1], NIDS_PER_BLOCK);
+       f2fs_ra_node_pages(&folios[idx]->page, offset[idx + 1], NIDS_PER_BLOCK);
 
        /* free direct nodes linked to a partial indirect node */
        for (i = offset[idx + 1]; i < NIDS_PER_BLOCK; i++) {
-               child_nid = get_nid(pages[idx], i, false);
+               child_nid = get_nid(&folios[idx]->page, i, false);
                if (!child_nid)
                        continue;
                dn->nid = child_nid;
                err = truncate_dnode(dn);
                if (err < 0)
                        goto fail;
-               if (set_nid(pages[idx], i, 0, false))
+               if (set_nid(&folios[idx]->page, i, 0, false))
                        dn->node_changed = true;
        }
 
        if (offset[idx + 1] == 0) {
-               dn->node_page = pages[idx];
+               dn->node_page = &folios[idx]->page;
                dn->nid = nid[idx];
                err = truncate_node(dn);
                if (err)
                        goto fail;
        } else {
-               f2fs_put_page(pages[idx], 1);
+               f2fs_folio_put(folios[idx], true);
        }
        offset[idx]++;
        offset[idx + 1] = 0;
        idx--;
 fail:
        for (i = idx; i >= 0; i--)
-               f2fs_put_page(pages[i], 1);
+               f2fs_folio_put(folios[i], true);
 
        trace_f2fs_truncate_partial_nodes(dn->inode, nid, depth, err);