f2fs: Pass a folio to f2fs_delete_entry()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:12:29 +0000 (21:12 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:44 +0000 (15:26 +0000)
All callers now have a folio so pass it in.  Removes eight 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/dir.c
fs/f2fs/f2fs.h
fs/f2fs/namei.c
fs/f2fs/recovery.c

index c31fac21ae6389713c47f617c93ccc794a219e56..3f271cdaac9bbf99152bb17ab46e50a1d44f74f6 100644 (file)
@@ -861,13 +861,13 @@ void f2fs_drop_nlink(struct inode *dir, struct inode *inode)
  * It only removes the dentry from the dentry page, corresponding name
  * entry in name page does not need to be touched during deletion.
  */
-void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
+void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct folio *folio,
                                        struct inode *dir, struct inode *inode)
 {
-       struct  f2fs_dentry_block *dentry_blk;
+       struct f2fs_dentry_block *dentry_blk;
        unsigned int bit_pos;
        int slots = GET_DENTRY_SLOTS(le16_to_cpu(dentry->name_len));
-       pgoff_t index = page_folio(page)->index;
+       pgoff_t index = folio->index;
        int i;
 
        f2fs_update_time(F2FS_I_SB(dir), REQ_TIME);
@@ -876,12 +876,12 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
                f2fs_add_ino_entry(F2FS_I_SB(dir), dir->i_ino, TRANS_DIR_INO);
 
        if (f2fs_has_inline_dentry(dir))
-               return f2fs_delete_inline_entry(dentry, page, dir, inode);
+               return f2fs_delete_inline_entry(dentry, &folio->page, dir, inode);
 
-       lock_page(page);
-       f2fs_wait_on_page_writeback(page, DATA, true, true);
+       folio_lock(folio);
+       f2fs_folio_wait_writeback(folio, DATA, true, true);
 
-       dentry_blk = page_address(page);
+       dentry_blk = folio_address(folio);
        bit_pos = dentry - dentry_blk->dentry;
        for (i = 0; i < slots; i++)
                __clear_bit_le(bit_pos + i, &dentry_blk->dentry_bitmap);
@@ -890,19 +890,19 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
        bit_pos = find_next_bit_le(&dentry_blk->dentry_bitmap,
                        NR_DENTRY_IN_BLOCK,
                        0);
-       set_page_dirty(page);
+       folio_mark_dirty(folio);
 
        if (bit_pos == NR_DENTRY_IN_BLOCK &&
                !f2fs_truncate_hole(dir, index, index + 1)) {
-               f2fs_clear_page_cache_dirty_tag(page_folio(page));
-               clear_page_dirty_for_io(page);
-               ClearPageUptodate(page);
-               clear_page_private_all(page);
+               f2fs_clear_page_cache_dirty_tag(folio);
+               folio_clear_dirty_for_io(folio);
+               folio_clear_uptodate(folio);
+               clear_page_private_all(&folio->page);
 
                inode_dec_dirty_pages(dir);
                f2fs_remove_dirty_inode(dir);
        }
-       f2fs_put_page(page, 1);
+       f2fs_folio_put(folio, true);
 
        inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
        f2fs_mark_inode_dirty_sync(dir, false);
index e3942fad67d1d58484ccc58382ffffa2b036a3fc..f0d6ad71432fb63da2dd093645ea040b4ab51f49 100644 (file)
@@ -3678,7 +3678,7 @@ int f2fs_add_dentry(struct inode *dir, const struct f2fs_filename *fname,
                        struct inode *inode, nid_t ino, umode_t mode);
 int f2fs_do_add_link(struct inode *dir, const struct qstr *name,
                        struct inode *inode, nid_t ino, umode_t mode);
-void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
+void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct folio *folio,
                        struct inode *dir, struct inode *inode);
 int f2fs_do_tmpfile(struct inode *inode, struct inode *dir,
                                        struct f2fs_filename *fname);
index b8765e1ca9c3cd20fd815ea1f3c663d4e5442541..2d91f89cd2b728cbeb7e99764f1e829e7ca4e033 100644 (file)
@@ -587,7 +587,7 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
                f2fs_folio_put(folio, false);
                goto fail;
        }
-       f2fs_delete_entry(de, &folio->page, dir, inode);
+       f2fs_delete_entry(de, folio, dir, inode);
        f2fs_unlock_op(sbi);
 
        /* VFS negative dentries are incompatible with Encoding and
@@ -1047,7 +1047,7 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
        inode_set_ctime_current(old_inode);
        f2fs_mark_inode_dirty_sync(old_inode, false);
 
-       f2fs_delete_entry(old_entry, &old_folio->page, old_dir, NULL);
+       f2fs_delete_entry(old_entry, old_folio, old_dir, NULL);
        old_folio = NULL;
 
        if (whiteout) {
index 849d014023d43b9b6e1371468160f819ce2d6e9d..0dfc60ac0f37b17b2d97a37a132d9aed118f6542 100644 (file)
@@ -212,7 +212,7 @@ retry:
                        iput(einode);
                        goto out_put;
                }
-               f2fs_delete_entry(de, &folio->page, dir, einode);
+               f2fs_delete_entry(de, folio, dir, einode);
                iput(einode);
                goto retry;
        } else if (IS_ERR(folio)) {