nilfs2: convert nilfs_find_entry to use a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 27 Nov 2023 14:30:30 +0000 (23:30 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 11 Dec 2023 01:21:47 +0000 (17:21 -0800)
Use the new folio APIs to remove calls to compound_head().

[konishi.ryusuke: resolved a conflict due to style warning correction]
Link: https://lkml.kernel.org/r/20231127143036.2425-12-konishi.ryusuke@gmail.com
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/nilfs2/dir.c

index c7b046589877d69058987c7531561967660767f4..a79726182867f456c22ad7c15b11ef8519bccd5c 100644 (file)
@@ -339,7 +339,7 @@ nilfs_find_entry(struct inode *dir, const struct qstr *qstr,
        unsigned int reclen = NILFS_DIR_REC_LEN(namelen);
        unsigned long start, n;
        unsigned long npages = dir_pages(dir);
-       struct page *page = NULL;
+       struct folio *folio = NULL;
        struct nilfs_inode_info *ei = NILFS_I(dir);
        struct nilfs_dir_entry *de;
 
@@ -354,7 +354,7 @@ nilfs_find_entry(struct inode *dir, const struct qstr *qstr,
                start = 0;
        n = start;
        do {
-               char *kaddr = nilfs_get_page(dir, n, &page);
+               char *kaddr = nilfs_get_folio(dir, n, &folio);
 
                if (!IS_ERR(kaddr)) {
                        de = (struct nilfs_dir_entry *)kaddr;
@@ -363,18 +363,18 @@ nilfs_find_entry(struct inode *dir, const struct qstr *qstr,
                                if (de->rec_len == 0) {
                                        nilfs_error(dir->i_sb,
                                                "zero-length directory entry");
-                                       unmap_and_put_page(page, kaddr);
+                                       folio_release_kmap(folio, kaddr);
                                        goto out;
                                }
                                if (nilfs_match(namelen, name, de))
                                        goto found;
                                de = nilfs_next_entry(de);
                        }
-                       unmap_and_put_page(page, kaddr);
+                       folio_release_kmap(folio, kaddr);
                }
                if (++n >= npages)
                        n = 0;
-               /* next page is past the blocks we've got */
+               /* next folio is past the blocks we've got */
                if (unlikely(n > (dir->i_blocks >> (PAGE_SHIFT - 9)))) {
                        nilfs_error(dir->i_sb,
                               "dir %lu size %lld exceeds block count %llu",
@@ -387,7 +387,7 @@ out:
        return NULL;
 
 found:
-       *res_page = page;
+       *res_page = &folio->page;
        ei->i_dir_start_lookup = n;
        return de;
 }