2021-07-27 07:23:39

by Daeho Jeong

[permalink] [raw]
Subject: [PATCH] f2fs: turn back remapped address in compressed page endio

From: Daeho Jeong <[email protected]>

Turned back the remmaped sector address to the address in the partition,
when ending io, for compress cache to work properly.

Fixes: 6ce19aff0b8c ("f2fs: compress: add compress_inode to cache
compressed blocks")
Signed-off-by: Daeho Jeong <[email protected]>
Signed-off-by: Youngjin Gil <[email protected]>
Signed-off-by: Hyeong Jun Kim <[email protected]>
---
fs/f2fs/data.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 1a716c3b5457..53e71e1bb673 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -228,7 +228,13 @@ static void f2fs_handle_step_decompress(struct bio_post_read_ctx *ctx)
struct bio_vec *bv;
struct bvec_iter_all iter_all;
bool all_compressed = true;
- block_t blkaddr = SECTOR_TO_BLOCK(ctx->bio->bi_iter.bi_sector);
+ sector_t sector = ctx->bio->bi_iter.bi_sector;
+ block_t blkaddr;
+
+ if (bio_flagged(ctx->bio, BIO_REMAPPED))
+ sector -= ctx->bio->bi_bdev->bd_start_sect;
+
+ blkaddr = SECTOR_TO_BLOCK(sector);

bio_for_each_segment_all(bv, ctx->bio, iter_all) {
struct page *page = bv->bv_page;
--
2.32.0.432.gabb21c7263-goog