f2fs: Pass a folio to f2fs_parent_dir()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:12:28 +0000 (21:12 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:44 +0000 (15:26 +0000)
Convert all the callers to pass a folio.  Removes 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/namei.c

index a70cff0e22c56e4739b0eb368ab0730635f7b82a..c31fac21ae6389713c47f617c93ccc794a219e56 100644 (file)
@@ -406,12 +406,9 @@ struct f2fs_dir_entry *f2fs_find_entry(struct inode *dir,
        return de;
 }
 
-struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct page **p)
+struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct folio **f)
 {
-       struct folio *folio;
-       struct f2fs_dir_entry *r = f2fs_find_entry(dir, &dotdot_name, &folio);
-       *p = &folio->page;
-       return r;
+       return f2fs_find_entry(dir, &dotdot_name, f);
 }
 
 ino_t f2fs_inode_by_name(struct inode *dir, const struct qstr *qstr,
index e103759fde00f2b12a767bb8968bf772f64fa42a..e3942fad67d1d58484ccc58382ffffa2b036a3fc 100644 (file)
@@ -3662,7 +3662,7 @@ struct f2fs_dir_entry *__f2fs_find_entry(struct inode *dir,
                const struct f2fs_filename *fname, struct folio **res_folio);
 struct f2fs_dir_entry *f2fs_find_entry(struct inode *dir,
                        const struct qstr *child, struct folio **res_folio);
-struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct page **p);
+struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct folio **f);
 ino_t f2fs_inode_by_name(struct inode *dir, const struct qstr *qstr,
                        struct folio **folio);
 void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de,
index 5d126db3195ceb24a5d9c2b33b9a0deb4fda94d4..b8765e1ca9c3cd20fd815ea1f3c663d4e5442541 100644 (file)
@@ -908,7 +908,7 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
        struct inode *old_inode = d_inode(old_dentry);
        struct inode *new_inode = d_inode(new_dentry);
        struct inode *whiteout = NULL;
-       struct page *old_dir_page = NULL;
+       struct folio *old_dir_folio = NULL;
        struct folio *old_folio, *new_folio = NULL;
        struct f2fs_dir_entry *old_dir_entry = NULL;
        struct f2fs_dir_entry *old_entry;
@@ -976,10 +976,10 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
        }
 
        if (old_is_dir && old_dir != new_dir) {
-               old_dir_entry = f2fs_parent_dir(old_inode, &old_dir_page);
+               old_dir_entry = f2fs_parent_dir(old_inode, &old_dir_folio);
                if (!old_dir_entry) {
-                       if (IS_ERR(old_dir_page))
-                               err = PTR_ERR(old_dir_page);
+                       if (IS_ERR(old_dir_folio))
+                               err = PTR_ERR(old_dir_folio);
                        goto out_old;
                }
        }
@@ -1064,7 +1064,7 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
        }
 
        if (old_dir_entry)
-               f2fs_set_link(old_inode, old_dir_entry, old_dir_page, new_dir);
+               f2fs_set_link(old_inode, old_dir_entry, &old_dir_folio->page, new_dir);
        if (old_is_dir)
                f2fs_i_links_write(old_dir, false);
 
@@ -1088,7 +1088,7 @@ put_out_dir:
        f2fs_folio_put(new_folio, false);
 out_dir:
        if (old_dir_entry)
-               f2fs_put_page(old_dir_page, 0);
+               f2fs_folio_put(old_dir_folio, false);
 out_old:
        f2fs_folio_put(old_folio, false);
 out:
@@ -1102,7 +1102,7 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
        struct f2fs_sb_info *sbi = F2FS_I_SB(old_dir);
        struct inode *old_inode = d_inode(old_dentry);
        struct inode *new_inode = d_inode(new_dentry);
-       struct page *old_dir_page, *new_dir_page;
+       struct folio *old_dir_folio, *new_dir_folio;
        struct folio *old_folio, *new_folio;
        struct f2fs_dir_entry *old_dir_entry = NULL, *new_dir_entry = NULL;
        struct f2fs_dir_entry *old_entry, *new_entry;
@@ -1149,20 +1149,20 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
        if (old_dir != new_dir) {
                if (S_ISDIR(old_inode->i_mode)) {
                        old_dir_entry = f2fs_parent_dir(old_inode,
-                                                       &old_dir_page);
+                                                       &old_dir_folio);
                        if (!old_dir_entry) {
-                               if (IS_ERR(old_dir_page))
-                                       err = PTR_ERR(old_dir_page);
+                               if (IS_ERR(old_dir_folio))
+                                       err = PTR_ERR(old_dir_folio);
                                goto out_new;
                        }
                }
 
                if (S_ISDIR(new_inode->i_mode)) {
                        new_dir_entry = f2fs_parent_dir(new_inode,
-                                                       &new_dir_page);
+                                                       &new_dir_folio);
                        if (!new_dir_entry) {
-                               if (IS_ERR(new_dir_page))
-                                       err = PTR_ERR(new_dir_page);
+                               if (IS_ERR(new_dir_folio))
+                                       err = PTR_ERR(new_dir_folio);
                                goto out_old_dir;
                        }
                }
@@ -1189,11 +1189,11 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
 
        /* update ".." directory entry info of old dentry */
        if (old_dir_entry)
-               f2fs_set_link(old_inode, old_dir_entry, old_dir_page, new_dir);
+               f2fs_set_link(old_inode, old_dir_entry, &old_dir_folio->page, new_dir);
 
        /* update ".." directory entry info of new dentry */
        if (new_dir_entry)
-               f2fs_set_link(new_inode, new_dir_entry, new_dir_page, old_dir);
+               f2fs_set_link(new_inode, new_dir_entry, &new_dir_folio->page, old_dir);
 
        /* update directory entry info of old dir inode */
        f2fs_set_link(old_dir, old_entry, &old_folio->page, new_inode);
@@ -1247,11 +1247,11 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
        return 0;
 out_new_dir:
        if (new_dir_entry) {
-               f2fs_put_page(new_dir_page, 0);
+               f2fs_folio_put(new_dir_folio, 0);
        }
 out_old_dir:
        if (old_dir_entry) {
-               f2fs_put_page(old_dir_page, 0);
+               f2fs_folio_put(old_dir_folio, 0);
        }
 out_new:
        f2fs_folio_put(new_folio, false);