]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
f2fs: Convert f2fs_load_compressed_page() to f2fs_load_compressed_folio()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 31 Mar 2025 20:12:40 +0000 (21:12 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 28 Apr 2025 15:26:46 +0000 (15:26 +0000)
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) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/compress.c
fs/f2fs/data.c
fs/f2fs/f2fs.h

index 2f9c35d0abda38b39c988006d6af88574fab1ad9..9da80914304f9ba6c84551cea633b36e546e4463 100644 (file)
@@ -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;
index 8d5676743932522edd5589d541a0e36efbdc1ff9..316c413079ecc9320119bea2c404ee69f94d40db 100644 (file)
@@ -2286,8 +2286,7 @@ skip_reading_dnode:
 
                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;
index 97320f4dcf3c7f4fb80b99f5874d017a5d3f33e1..295d28791dd374ee0b68a774bf813c635890e48d 100644 (file)
@@ -4479,7 +4479,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)                                    \
@@ -4535,8 +4535,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)