Thanks,
+
/* PG_error was set if verity failed. */
if (failed || PageError(rpage)) {
ClearPageUptodate(rpage);
@@ -1772,10 +1776,11 @@ void f2fs_invalidate_compress_page(struct
f2fs_sb_info *sbi, block_t blkaddr)
}
void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi, struct page
*page,
- nid_t ino, block_t blkaddr)
+ struct decompress_io_ctx *dic, block_t blkaddr)
{
struct page *cpage;
int ret;
+ nid_t ino = dic->inode->i_ino;
if (!test_opt(sbi, COMPRESS_CACHE))
return;
@@ -1804,6 +1809,7 @@ void f2fs_cache_compressed_page(struct
f2fs_sb_info *sbi, struct page *page,
}
set_page_private_data(cpage, ino);
+ dic->cpage_cached = true;
if (!f2fs_is_valid_blkaddr(sbi, blkaddr,
DATA_GENERIC_ENHANCE_READ))
goto out;
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index
ac6dda6c4c5a..128190b0c737 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1551,6 +1551,7 @@ struct decompress_io_ctx {
*/
refcount_t refcnt;
+ bool cpage_cached; /* indicate cpages cached in compress
mapping*/
bool failed; /* IO error occurred before
decompression?
*/
bool need_verity; /* need fs-verity verification after
decompression? */
void *private; /* payload buffer for specified
decompression algorithm */
@@ -4085,7 +4086,7 @@ void f2fs_destroy_compress_cache(void);
struct address_space *COMPRESS_MAPPING(struct f2fs_sb_info *sbi);
void f2fs_invalidate_compress_page(struct f2fs_sb_info *sbi, block_t
blkaddr);
void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi, struct page
*page,
- nid_t ino, block_t blkaddr);
+ struct decompress_io_ctx *dic, block_t blkaddr);
bool f2fs_load_compressed_page(struct f2fs_sb_info *sbi, struct page
*page,
block_t
blkaddr);
void f2fs_invalidate_compress_pages(struct f2fs_sb_info *sbi, nid_t
ino); @@ -4137,8 +4138,8 @@ static inline int __init
f2fs_init_compress_cache(void) { return 0; }
static inline void f2fs_destroy_compress_cache(void) { }
static inline void f2fs_invalidate_compress_page(struct f2fs_sb_info *sbi,
block_t blkaddr) { }
-static inline void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi,
- struct page *page, nid_t ino, block_t blkaddr)
{ }
+static inline void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi,
struct page *page,
+ struct decompress_io_ctx *dic, 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 void f2fs_invalidate_compress_pages(struct
f2fs_sb_info *sbi,