On Mon, Apr 03, 2023 at 03:22:17PM +0200, Pankaj Raghav wrote: > 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. I'm pretty sure this is wrong. I've now sent a series to untangle and fix up the zram I/O path, which should address the underlying issue here. It will obviously conflict with this patch, so maybe the best thing is to get the other page_endio removals into their respective maintainer trees, and then just do the final removal of the unused function after -rc1.