The only caller already has a folio, so pass it in.  Copy the entire
size of the folio to support large block sizes.  Remove two calls to
compound_head().

Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
---
 fs/f2fs/compress.c | 16 ++++++++--------
 fs/f2fs/data.c     |  3 +--
 fs/f2fs/f2fs.h     |  6 +++---
 3 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
index 2f9c35d0abda..9da80914304f 100644
--- a/fs/f2fs/compress.c
+++ b/fs/f2fs/compress.c
@@ -1964,25 +1964,25 @@ void f2fs_cache_compressed_page(struct f2fs_sb_info 
*sbi, struct page *page,
        f2fs_folio_put(cfolio, true);
 }
 
-bool f2fs_load_compressed_page(struct f2fs_sb_info *sbi, struct page *page,
+bool f2fs_load_compressed_folio(struct f2fs_sb_info *sbi, struct folio *folio,
                                                                block_t blkaddr)
 {
-       struct page *cpage;
+       struct folio *cfolio;
        bool hitted = false;
 
        if (!test_opt(sbi, COMPRESS_CACHE))
                return false;
 
-       cpage = f2fs_pagecache_get_page(COMPRESS_MAPPING(sbi),
+       cfolio = f2fs_filemap_get_folio(COMPRESS_MAPPING(sbi),
                                blkaddr, FGP_LOCK | FGP_NOWAIT, GFP_NOFS);
-       if (cpage) {
-               if (PageUptodate(cpage)) {
+       if (!IS_ERR(cfolio)) {
+               if (folio_test_uptodate(cfolio)) {
                        atomic_inc(&sbi->compress_page_hit);
-                       memcpy(page_address(page),
-                               page_address(cpage), PAGE_SIZE);
+                       memcpy(folio_address(folio),
+                               folio_address(cfolio), folio_size(folio));
                        hitted = true;
                }
-               f2fs_put_page(cpage, 1);
+               f2fs_folio_put(cfolio, true);
        }
 
        return hitted;
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index d899341a04f8..8980b77bfdab 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -2287,8 +2287,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct 
bio **bio_ret,
 
                f2fs_wait_on_block_writeback(inode, blkaddr);
 
-               if (f2fs_load_compressed_page(sbi, folio_page(folio, 0),
-                                                               blkaddr)) {
+               if (f2fs_load_compressed_folio(sbi, folio, blkaddr)) {
                        if (atomic_dec_and_test(&dic->remaining_pages)) {
                                f2fs_decompress_cluster(dic, true);
                                break;
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index af0420f76e98..e459558fc071 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -4465,7 +4465,7 @@ void f2fs_invalidate_compress_pages_range(struct 
f2fs_sb_info *sbi,
                                        block_t blkaddr, unsigned int len);
 void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi, struct page *page,
                                                nid_t ino, block_t blkaddr);
-bool f2fs_load_compressed_page(struct f2fs_sb_info *sbi, struct page *page,
+bool f2fs_load_compressed_folio(struct f2fs_sb_info *sbi, struct folio *folio,
                                                                block_t 
blkaddr);
 void f2fs_invalidate_compress_pages(struct f2fs_sb_info *sbi, nid_t ino);
 #define inc_compr_inode_stat(inode)                                    \
@@ -4521,8 +4521,8 @@ static inline void 
f2fs_invalidate_compress_pages_range(struct f2fs_sb_info *sbi
                                block_t blkaddr, unsigned int len) { }
 static inline void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi,
                                struct page *page, nid_t ino, block_t blkaddr) 
{ }
-static inline bool f2fs_load_compressed_page(struct f2fs_sb_info *sbi,
-                               struct page *page, block_t blkaddr) { return 
false; }
+static inline bool f2fs_load_compressed_folio(struct f2fs_sb_info *sbi,
+               struct folio *folio, block_t blkaddr) { return false; }
 static inline void f2fs_invalidate_compress_pages(struct f2fs_sb_info *sbi,
                                                        nid_t ino) { }
 #define inc_compr_inode_stat(inode)            do { } while (0)
-- 
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