f2fs: Return a folio from f2fs_init_inode_metadata()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:12:45 +0000 (21:12 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:46 +0000 (15:26 +0000)
Convert all three callers to handle a folio return.  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 04d38f1615d244f01e5f937a5b369d4afc328864..6a26b7ca6a3187cfd04e02b3137694d1ae48d4a5 100644 (file)
@@ -515,7 +515,7 @@ static int make_empty_dir(struct inode *inode,
        return 0;
 }
 
-struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
+struct folio *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
                const struct f2fs_filename *fname, struct folio *dfolio)
 {
        struct folio *folio;
@@ -524,7 +524,7 @@ struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
        if (is_inode_flag_set(inode, FI_NEW_INODE)) {
                folio = f2fs_new_inode_folio(inode);
                if (IS_ERR(folio))
-                       return &folio->page;
+                       return folio;
 
                if (S_ISDIR(inode->i_mode)) {
                        /* in order to handle error case */
@@ -555,7 +555,7 @@ struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
        } else {
                folio = f2fs_get_inode_folio(F2FS_I_SB(dir), inode->i_ino);
                if (IS_ERR(folio))
-                       return &folio->page;
+                       return folio;
        }
 
        init_dent_inode(dir, inode, fname, folio);
@@ -575,7 +575,7 @@ struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
                        f2fs_remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino);
                f2fs_i_links_write(inode, true);
        }
-       return &folio->page;
+       return folio;
 
 put_error:
        clear_nlink(inode);
@@ -669,7 +669,7 @@ int f2fs_add_regular_entry(struct inode *dir, const struct f2fs_filename *fname,
        struct folio *dentry_folio = NULL;
        struct f2fs_dentry_block *dentry_blk = NULL;
        struct f2fs_dentry_ptr d;
-       struct page *page = NULL;
+       struct folio *folio = NULL;
        int slots, err = 0;
 
        level = 0;
@@ -720,9 +720,9 @@ add_dentry:
 
        if (inode) {
                f2fs_down_write(&F2FS_I(inode)->i_sem);
-               page = f2fs_init_inode_metadata(inode, dir, fname, NULL);
-               if (IS_ERR(page)) {
-                       err = PTR_ERR(page);
+               folio = f2fs_init_inode_metadata(inode, dir, fname, NULL);
+               if (IS_ERR(folio)) {
+                       err = PTR_ERR(folio);
                        goto fail;
                }
        }
@@ -738,9 +738,9 @@ add_dentry:
 
                /* synchronize inode page's data from inode cache */
                if (is_inode_flag_set(inode, FI_NEW_INODE))
-                       f2fs_update_inode(inode, page);
+                       f2fs_update_inode(inode, &folio->page);
 
-               f2fs_put_page(page, 1);
+               f2fs_folio_put(folio, true);
        }
 
        f2fs_update_parent_metadata(dir, inode, current_depth);
@@ -816,16 +816,16 @@ int f2fs_do_add_link(struct inode *dir, const struct qstr *name,
 int f2fs_do_tmpfile(struct inode *inode, struct inode *dir,
                                        struct f2fs_filename *fname)
 {
-       struct page *page;
+       struct folio *folio;
        int err = 0;
 
        f2fs_down_write(&F2FS_I(inode)->i_sem);
-       page = f2fs_init_inode_metadata(inode, dir, fname, NULL);
-       if (IS_ERR(page)) {
-               err = PTR_ERR(page);
+       folio = f2fs_init_inode_metadata(inode, dir, fname, NULL);
+       if (IS_ERR(folio)) {
+               err = PTR_ERR(folio);
                goto fail;
        }
-       f2fs_put_page(page, 1);
+       f2fs_folio_put(folio, true);
 
        clear_inode_flag(inode, FI_NEW_INODE);
        f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
index b5e65a2b96b3ca461be1aba094b539af14971de5..f6ad151d76588f3d1a6010bf7aac6767f64e9138 100644 (file)
@@ -3662,7 +3662,7 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d,
                        unsigned int start_pos, struct fscrypt_str *fstr);
 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,
+struct folio *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir,
                const struct f2fs_filename *fname, struct folio *dfolio);
 void f2fs_update_parent_metadata(struct inode *dir, struct inode *inode,
                        unsigned int current_depth);
index b7d160736630cf92e1b4a87aeed4fadb2e58cf6e..3b65adb4d1b00ed2d3f9cbb0c3bb800da342907b 100644 (file)
@@ -641,7 +641,7 @@ int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
        void *inline_dentry = NULL;
        struct f2fs_dentry_ptr d;
        int slots = GET_DENTRY_SLOTS(fname->disk_name.len);
-       struct page *page = NULL;
+       struct folio *folio = NULL;
        int err = 0;
 
        ifolio = f2fs_get_inode_folio(sbi, dir->i_ino);
@@ -663,9 +663,9 @@ 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, ifolio);
-               if (IS_ERR(page)) {
-                       err = PTR_ERR(page);
+               folio = f2fs_init_inode_metadata(inode, dir, fname, ifolio);
+               if (IS_ERR(folio)) {
+                       err = PTR_ERR(folio);
                        goto fail;
                }
        }
@@ -683,9 +683,9 @@ int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
 
                /* synchronize inode page's data from inode cache */
                if (is_inode_flag_set(inode, FI_NEW_INODE))
-                       f2fs_update_inode(inode, page);
+                       f2fs_update_inode(inode, &folio->page);
 
-               f2fs_put_page(page, 1);
+               f2fs_folio_put(folio, true);
        }
 
        f2fs_update_parent_metadata(dir, inode, 0);