f2fs: Use a folio in f2fs_add_inline_entry()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:11:50 +0000 (21:11 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:38 +0000 (15:26 +0000)
Also convert f2fs_init_inode_metadata() to take a folio.  Remove
Remove three 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/inline.c

index 34dba1b6db0339b8b1c549fa44bec295053259d8..0c0d0c24b4e25551653c434a6bb16a3a408ccc26 100644 (file)
@@ -516,7 +516,7 @@ static int make_empty_dir(struct inode *inode,
 }
 
 struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
-                       const struct f2fs_filename *fname, struct page *dpage)
+               const struct f2fs_filename *fname, struct folio *dfolio)
 {
        struct folio *folio;
        int err;
@@ -537,7 +537,7 @@ struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
                        folio_put(folio);
                }
 
-               err = f2fs_init_acl(inode, dir, &folio->page, dpage);
+               err = f2fs_init_acl(inode, dir, &folio->page, &dfolio->page);
                if (err)
                        goto put_error;
 
index a83305188981e8c40208729a382d7f29ec3c36b1..4266971992dd7766a159949d6f846b779584007f 100644 (file)
@@ -3653,7 +3653,7 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d,
 void f2fs_do_make_empty_dir(struct inode *inode, struct inode *parent,
                        struct f2fs_dentry_ptr *d);
 struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
-                       const struct f2fs_filename *fname, struct page *dpage);
+               const struct f2fs_filename *fname, struct folio *dfolio);
 void f2fs_update_parent_metadata(struct inode *dir, struct inode *inode,
                        unsigned int current_depth);
 int f2fs_room_for_filename(const void *bitmap, int slots, int max_slots);
index 4684ecc0cb5af21f115827a1d0c1d5cd18def25a..15d14353f2aa03f4c365fed459df9b7050015fed 100644 (file)
@@ -636,7 +636,7 @@ int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
                          struct inode *inode, nid_t ino, umode_t mode)
 {
        struct f2fs_sb_info *sbi = F2FS_I_SB(dir);
-       struct page *ipage;
+       struct folio *ifolio;
        unsigned int bit_pos;
        void *inline_dentry = NULL;
        struct f2fs_dentry_ptr d;
@@ -644,16 +644,16 @@ int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
        struct page *page = NULL;
        int err = 0;
 
-       ipage = f2fs_get_inode_page(sbi, dir->i_ino);
-       if (IS_ERR(ipage))
-               return PTR_ERR(ipage);
+       ifolio = f2fs_get_inode_folio(sbi, dir->i_ino);
+       if (IS_ERR(ifolio))
+               return PTR_ERR(ifolio);
 
-       inline_dentry = inline_data_addr(dir, ipage);
+       inline_dentry = inline_data_addr(dir, &ifolio->page);
        make_dentry_ptr_inline(dir, &d, inline_dentry);
 
        bit_pos = f2fs_room_for_filename(d.bitmap, slots, d.max);
        if (bit_pos >= d.max) {
-               err = do_convert_inline_dir(dir, ipage, inline_dentry);
+               err = do_convert_inline_dir(dir, &ifolio->page, inline_dentry);
                if (err)
                        return err;
                err = -EAGAIN;
@@ -663,19 +663,19 @@ int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
        if (inode) {
                f2fs_down_write_nested(&F2FS_I(inode)->i_sem,
                                                SINGLE_DEPTH_NESTING);
-               page = f2fs_init_inode_metadata(inode, dir, fname, ipage);
+               page = f2fs_init_inode_metadata(inode, dir, fname, ifolio);
                if (IS_ERR(page)) {
                        err = PTR_ERR(page);
                        goto fail;
                }
        }
 
-       f2fs_wait_on_page_writeback(ipage, NODE, true, true);
+       f2fs_folio_wait_writeback(ifolio, NODE, true, true);
 
        f2fs_update_dentry(ino, mode, &d, &fname->disk_name, fname->hash,
                           bit_pos);
 
-       set_page_dirty(ipage);
+       folio_mark_dirty(ifolio);
 
        /* we don't need to mark_inode_dirty now */
        if (inode) {
@@ -693,7 +693,7 @@ fail:
        if (inode)
                f2fs_up_write(&F2FS_I(inode)->i_sem);
 out:
-       f2fs_put_page(ipage, 1);
+       f2fs_folio_put(ifolio, true);
        return err;
 }