f2fs: Use folio in f2fs_read_merkle_tree_page
authorHuangXiaojia <huangxiaojia2@huawei.com>
Thu, 1 Feb 2024 07:38:58 +0000 (15:38 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 27 Feb 2024 17:41:15 +0000 (09:41 -0800)
Use folio in f2fs_read_merkle_tree_page to reduce folio & page converisons
from find_get_page_flags and read_mapping_page functions. But the return
value should be the exact page.

Signed-off-by: HuangXiaojia <huangxiaojia2@huawei.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/verity.c

index 4fc95f353a7a96c6cc67c6ea5dfabea0cc591e9c..f7bb0c54502c8d57981ffe9f41850b5c196e9f2c 100644 (file)
@@ -258,21 +258,23 @@ static struct page *f2fs_read_merkle_tree_page(struct inode *inode,
                                               pgoff_t index,
                                               unsigned long num_ra_pages)
 {
-       struct page *page;
+       struct folio *folio;
 
        index += f2fs_verity_metadata_pos(inode) >> PAGE_SHIFT;
 
-       page = find_get_page_flags(inode->i_mapping, index, FGP_ACCESSED);
-       if (!page || !PageUptodate(page)) {
+       folio = __filemap_get_folio(inode->i_mapping, index, FGP_ACCESSED, 0);
+       if (IS_ERR(folio) || !folio_test_uptodate(folio)) {
                DEFINE_READAHEAD(ractl, NULL, NULL, inode->i_mapping, index);
 
-               if (page)
-                       put_page(page);
+               if (!IS_ERR(folio))
+                       folio_put(folio);
                else if (num_ra_pages > 1)
                        page_cache_ra_unbounded(&ractl, num_ra_pages, 0);
-               page = read_mapping_page(inode->i_mapping, index, NULL);
+               folio = read_mapping_folio(inode->i_mapping, index, NULL);
+               if (IS_ERR(folio))
+                       return ERR_CAST(folio);
        }
-       return page;
+       return folio_file_page(folio, index);
 }
 
 static int f2fs_write_merkle_tree_block(struct inode *inode, const void *buf,