Pass the folio into make_empty_dir() and then into
f2fs_get_new_data_folio().  Removes a call to compound_head().

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

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 733802a53444..3776c1f2ad42 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -1339,11 +1339,11 @@ struct folio *f2fs_get_lock_data_folio(struct inode 
*inode, pgoff_t index,
  *
  * Also, caller should grab and release a rwsem by calling f2fs_lock_op() and
  * f2fs_unlock_op().
- * Note that, ipage is set only by make_empty_dir, and if any error occur,
- * ipage should be released by this function.
+ * Note that, ifolio is set only by make_empty_dir, and if any error occur,
+ * ifolio should be released by this function.
  */
 struct folio *f2fs_get_new_data_folio(struct inode *inode,
-               struct page *ipage, pgoff_t index, bool new_i_size)
+               struct folio *ifolio, pgoff_t index, bool new_i_size)
 {
        struct address_space *mapping = inode->i_mapping;
        struct folio *folio;
@@ -1353,20 +1353,20 @@ struct folio *f2fs_get_new_data_folio(struct inode 
*inode,
        folio = f2fs_grab_cache_folio(mapping, index, true);
        if (IS_ERR(folio)) {
                /*
-                * before exiting, we should make sure ipage will be released
+                * before exiting, we should make sure ifolio will be released
                 * if any error occur.
                 */
-               f2fs_put_page(ipage, 1);
+               f2fs_folio_put(ifolio, true);
                return ERR_PTR(-ENOMEM);
        }
 
-       set_new_dnode(&dn, inode, ipage, NULL, 0);
+       set_new_dnode(&dn, inode, &ifolio->page, NULL, 0);
        err = f2fs_reserve_block(&dn, index);
        if (err) {
                f2fs_folio_put(folio, true);
                return ERR_PTR(err);
        }
-       if (!ipage)
+       if (!ifolio)
                f2fs_put_dnode(&dn);
 
        if (folio_test_uptodate(folio))
@@ -1379,8 +1379,8 @@ struct folio *f2fs_get_new_data_folio(struct inode *inode,
        } else {
                f2fs_folio_put(folio, true);
 
-               /* if ipage exists, blkaddr should be NEW_ADDR */
-               f2fs_bug_on(F2FS_I_SB(inode), ipage);
+               /* if ifolio exists, blkaddr should be NEW_ADDR */
+               f2fs_bug_on(F2FS_I_SB(inode), ifolio);
                folio = f2fs_get_lock_data_folio(inode, index, true);
                if (IS_ERR(folio))
                        return folio;
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index aa8aafb6e332..25969d0ae76e 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -491,16 +491,16 @@ void f2fs_do_make_empty_dir(struct inode *inode, struct 
inode *parent,
 }
 
 static int make_empty_dir(struct inode *inode,
-               struct inode *parent, struct page *page)
+               struct inode *parent, struct folio *folio)
 {
        struct folio *dentry_folio;
        struct f2fs_dentry_block *dentry_blk;
        struct f2fs_dentry_ptr d;
 
        if (f2fs_has_inline_dentry(inode))
-               return f2fs_make_empty_inline_dir(inode, parent, page);
+               return f2fs_make_empty_inline_dir(inode, parent, &folio->page);
 
-       dentry_folio = f2fs_get_new_data_folio(inode, page, 0, true);
+       dentry_folio = f2fs_get_new_data_folio(inode, folio, 0, true);
        if (IS_ERR(dentry_folio))
                return PTR_ERR(dentry_folio);
 
@@ -528,7 +528,7 @@ struct page *f2fs_init_inode_metadata(struct inode *inode, 
struct inode *dir,
                if (S_ISDIR(inode->i_mode)) {
                        /* in order to handle error case */
                        folio_get(folio);
-                       err = make_empty_dir(inode, dir, &folio->page);
+                       err = make_empty_dir(inode, dir, folio);
                        if (err) {
                                folio_lock(folio);
                                goto put_error;
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 192e49208a56..75194caaf317 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3955,7 +3955,7 @@ struct folio *f2fs_find_data_folio(struct inode *inode, 
pgoff_t index,
 struct folio *f2fs_get_lock_data_folio(struct inode *inode, pgoff_t index,
                        bool for_write);
 struct folio *f2fs_get_new_data_folio(struct inode *inode,
-                       struct page *ipage, pgoff_t index, bool new_i_size);
+                       struct folio *ifolio, pgoff_t index, bool new_i_size);
 int f2fs_do_write_data_page(struct f2fs_io_info *fio);
 int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map, int 
flag);
 int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
-- 
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