]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
erofs: convert z_erofs_pcluster_readmore() to folios
authorGao Xiang <hsiangkao@linux.alibaba.com>
Wed, 3 Jul 2024 12:00:48 +0000 (20:00 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Mon, 8 Jul 2024 14:09:41 +0000 (22:09 +0800)
Unlike `pagecache_get_page()`, `__filemap_get_folio()` returns error
pointers instead of NULL, thus switching to `IS_ERR_OR_NULL`.

Apart from that, it's just a straightforward conversion.

Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240703120051.3653452-1-hsiangkao@linux.alibaba.com
fs/erofs/internal.h
fs/erofs/zdata.c

index 0c1b44ac9524f8bcf5999761953ae11259ab308d..9a72fcbc0b30bb8f3e3f643008ba9ea6bf23ef82 100644 (file)
@@ -312,17 +312,13 @@ static inline unsigned int erofs_inode_datalayout(unsigned int ifmt)
        return (ifmt >> EROFS_I_DATALAYOUT_BIT) & EROFS_I_DATALAYOUT_MASK;
 }
 
-/*
- * Different from grab_cache_page_nowait(), reclaiming is never triggered
- * when allocating new pages.
- */
-static inline
-struct page *erofs_grab_cache_page_nowait(struct address_space *mapping,
-                                         pgoff_t index)
+/* reclaiming is never triggered when allocating new folios. */
+static inline struct folio *erofs_grab_folio_nowait(struct address_space *as,
+                                                   pgoff_t index)
 {
-       return pagecache_get_page(mapping, index,
+       return __filemap_get_folio(as, index,
                        FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT,
-                       readahead_gfp_mask(mapping) & ~__GFP_RECLAIM);
+                       readahead_gfp_mask(as) & ~__GFP_RECLAIM);
 }
 
 /* Has a disk mapping */
index d6fe002a4a7194760d76ac06ca0d5ca0c540efaf..14cf96fcefe40d4c8b186d7f96f5e3c3856e5753 100644 (file)
@@ -1767,7 +1767,6 @@ static void z_erofs_pcluster_readmore(struct z_erofs_decompress_frontend *f,
                end = round_up(end, PAGE_SIZE);
        } else {
                end = round_up(map->m_la, PAGE_SIZE);
-
                if (!map->m_llen)
                        return;
        }
@@ -1775,15 +1774,15 @@ static void z_erofs_pcluster_readmore(struct z_erofs_decompress_frontend *f,
        cur = map->m_la + map->m_llen - 1;
        while ((cur >= end) && (cur < i_size_read(inode))) {
                pgoff_t index = cur >> PAGE_SHIFT;
-               struct page *page;
+               struct folio *folio;
 
-               page = erofs_grab_cache_page_nowait(inode->i_mapping, index);
-               if (page) {
-                       if (PageUptodate(page))
-                               unlock_page(page);
+               folio = erofs_grab_folio_nowait(inode->i_mapping, index);
+               if (!IS_ERR_OR_NULL(folio)) {
+                       if (folio_test_uptodate(folio))
+                               folio_unlock(folio);
                        else
-                               z_erofs_scan_folio(f, page_folio(page), !!rac);
-                       put_page(page);
+                               z_erofs_scan_folio(f, folio, !!rac);
+                       folio_put(folio);
                }
 
                if (cur < PAGE_SIZE)