[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230403132221.94921-2-p.raghav@samsung.com>
Date: Mon, 3 Apr 2023 15:22:17 +0200
From: Pankaj Raghav <p.raghav@...sung.com>
To: axboe@...nel.dk, minchan@...nel.org, martin@...ibond.com,
hubcap@...ibond.com, brauner@...nel.org, viro@...iv.linux.org.uk,
senozhatsky@...omium.org, akpm@...ux-foundation.org,
willy@...radead.org, hch@....de
Cc: devel@...ts.orangefs.org, mcgrof@...nel.org,
linux-block@...r.kernel.org, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, gost.dev@...sung.com,
linux-fsdevel@...r.kernel.org, Pankaj Raghav <p.raghav@...sung.com>
Subject: [PATCH v2 1/5] zram: always chain bio to the parent in
read_from_bdev_async
zram_bvec_read() is called with the bio set to NULL only in
writeback_store() function. When a writeback is triggered,
zram_bvec_read() is called only if ZRAM_WB flag is not set. That will
result only calling zram_read_from_zspool() in __zram_bvec_read().
rw_page callback used to call read_from_bdev_async with a NULL parent
bio but that has been removed since commit 3222d8c2a7f8
("block: remove ->rw_page").
We can now safely always call bio_chain() as read_from_bdev_async() will
be called with a parent bio set. A WARN_ON_ONCE is added if this function
is called with parent set to NULL.
Signed-off-by: Pankaj Raghav <p.raghav@...sung.com>
---
drivers/block/zram/zram_drv.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 3feadfb96114..d16d0630b178 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -606,15 +606,6 @@ static void free_block_bdev(struct zram *zram, unsigned long blk_idx)
atomic64_dec(&zram->stats.bd_count);
}
-static void zram_page_end_io(struct bio *bio)
-{
- struct page *page = bio_first_page_all(bio);
-
- page_endio(page, op_is_write(bio_op(bio)),
- blk_status_to_errno(bio->bi_status));
- bio_put(bio);
-}
-
/*
* Returns 1 if the submission is successful.
*/
@@ -634,11 +625,10 @@ static int read_from_bdev_async(struct zram *zram, struct bio_vec *bvec,
return -EIO;
}
- if (!parent)
- bio->bi_end_io = zram_page_end_io;
- else
- bio_chain(bio, parent);
+ if (WARN_ON_ONCE(!parent))
+ return -EINVAL;
+ bio_chain(bio, parent);
submit_bio(bio);
return 1;
}
--
2.34.1
Powered by blists - more mailing lists