Since this is the only caller of f2fs_new_inode_page(), convert that
to return a folio at the same time.  Removes four calls to
compound_head().

Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
---
 fs/f2fs/dir.c  | 37 +++++++++++++++++++------------------
 fs/f2fs/f2fs.h |  2 +-
 fs/f2fs/node.c |  8 ++++----
 3 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index 2cc4ad636290..aa8aafb6e332 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -517,46 +517,47 @@ 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)
 {
-       struct page *page;
+       struct folio *folio;
        int err;
 
        if (is_inode_flag_set(inode, FI_NEW_INODE)) {
-               page = f2fs_new_inode_page(inode);
-               if (IS_ERR(page))
-                       return page;
+               folio = f2fs_new_inode_folio(inode);
+               if (IS_ERR(folio))
+                       return &folio->page;
 
                if (S_ISDIR(inode->i_mode)) {
                        /* in order to handle error case */
-                       get_page(page);
-                       err = make_empty_dir(inode, dir, page);
+                       folio_get(folio);
+                       err = make_empty_dir(inode, dir, &folio->page);
                        if (err) {
-                               lock_page(page);
+                               folio_lock(folio);
                                goto put_error;
                        }
-                       put_page(page);
+                       folio_put(folio);
                }
 
-               err = f2fs_init_acl(inode, dir, page, dpage);
+               err = f2fs_init_acl(inode, dir, &folio->page, dpage);
                if (err)
                        goto put_error;
 
                err = f2fs_init_security(inode, dir,
-                                        fname ? fname->usr_fname : NULL, page);
+                                        fname ? fname->usr_fname : NULL,
+                                        &folio->page);
                if (err)
                        goto put_error;
 
                if (IS_ENCRYPTED(inode)) {
-                       err = fscrypt_set_context(inode, page);
+                       err = fscrypt_set_context(inode, folio);
                        if (err)
                                goto put_error;
                }
        } else {
-               page = f2fs_get_inode_page(F2FS_I_SB(dir), inode->i_ino);
-               if (IS_ERR(page))
-                       return page;
+               folio = f2fs_get_inode_folio(F2FS_I_SB(dir), inode->i_ino);
+               if (IS_ERR(folio))
+                       return &folio->page;
        }
 
-       init_dent_inode(dir, inode, fname, page);
+       init_dent_inode(dir, inode, fname, &folio->page);
 
        /*
         * This file should be checkpointed during fsync.
@@ -573,12 +574,12 @@ 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 page;
+       return &folio->page;
 
 put_error:
        clear_nlink(inode);
-       f2fs_update_inode(inode, page);
-       f2fs_put_page(page, 1);
+       f2fs_update_inode(inode, &folio->page);
+       f2fs_folio_put(folio, true);
        return ERR_PTR(err);
 }
 
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 9fd4640f67bf..192e49208a56 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3726,7 +3726,7 @@ int f2fs_truncate_xattr_node(struct inode *inode);
 int f2fs_wait_on_node_pages_writeback(struct f2fs_sb_info *sbi,
                                        unsigned int seq_id);
 int f2fs_remove_inode_page(struct inode *inode);
-struct page *f2fs_new_inode_page(struct inode *inode);
+struct folio *f2fs_new_inode_folio(struct inode *inode);
 struct folio *f2fs_new_node_folio(struct dnode_of_data *dn, unsigned int ofs);
 void f2fs_ra_node_page(struct f2fs_sb_info *sbi, nid_t nid);
 struct folio *f2fs_get_node_folio(struct f2fs_sb_info *sbi, pgoff_t nid);
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 5fb4f9c3c20f..cc4c3ba98140 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1312,15 +1312,15 @@ int f2fs_remove_inode_page(struct inode *inode)
        return 0;
 }
 
-struct page *f2fs_new_inode_page(struct inode *inode)
+struct folio *f2fs_new_inode_folio(struct inode *inode)
 {
        struct dnode_of_data dn;
 
        /* allocate inode page for new inode */
        set_new_dnode(&dn, inode, NULL, NULL, inode->i_ino);
 
-       /* caller should f2fs_put_page(page, 1); */
-       return f2fs_new_node_page(&dn, 0);
+       /* caller should f2fs_folio_put(folio, true); */
+       return f2fs_new_node_folio(&dn, 0);
 }
 
 struct folio *f2fs_new_node_folio(struct dnode_of_data *dn, unsigned int ofs)
@@ -2369,7 +2369,7 @@ static bool add_free_nid(struct f2fs_sb_info *sbi,
                 *                          - __lookup_nat_cache
                 *  - f2fs_add_link
                 *   - f2fs_init_inode_metadata
-                *    - f2fs_new_inode_page
+                *    - f2fs_new_inode_folio
                 *     - f2fs_new_node_page
                 *      - set_node_addr
                 *  - f2fs_alloc_nid_done
-- 
2.47.2



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to