* [PATCH v2] zram: do not forget to endio for partial discard requests
@ 2026-03-31 7:35 Sergey Senozhatsky
2026-03-31 7:40 ` Qu Wenruo
2026-03-31 7:40 ` Sergey Senozhatsky
0 siblings, 2 replies; 4+ messages in thread
From: Sergey Senozhatsky @ 2026-03-31 7:35 UTC (permalink / raw)
To: Andrew Morton
Cc: Minchan Kim, Brian Geffon, linux-block, linux-mm,
Sergey Senozhatsky, Qu Wenruo, Christoph Hellwig
As reported by Qu Wenruo, the following
getconf PAGESIZE
65536
blkdiscard -p 4k /dev/zram0
takes literally forever to complete. zram doesn't support
partial discards and just returns immediately w/o doing any
discard work in such cases. The problem is that we forget
to endio on our way out, so blkdiscard sleeps forever in
submit_bio_wait(). Fix this by adding a missing bio_endio()
call.
Fixes: 0120dd6e4e202 ("zram: make zram_bio_discard more self-contained")
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Reported-by: Qu Wenruo <wqu@suse.com>
Closes: https://lore.kernel.org/linux-block/92361cd3-fb8b-482e-bc89-15ff1acb9a59@suse.com
Test-by: Qu Wenruo <wqu@suse.com>
Cc: Christoph Hellwig <hch@lst.de>
---
v1->v2:
- use goto end_bio (Christoph)
drivers/block/zram/zram_drv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index dcea703a6766..aca67d7144e4 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -2684,7 +2684,7 @@ static void zram_bio_discard(struct zram *zram, struct bio *bio)
*/
if (offset) {
if (n <= (PAGE_SIZE - offset))
- return;
+ goto end_bio;
n -= (PAGE_SIZE - offset);
index++;
@@ -2699,6 +2699,7 @@ static void zram_bio_discard(struct zram *zram, struct bio *bio)
n -= PAGE_SIZE;
}
+end_bio:
bio_endio(bio);
}
--
2.53.0.1018.g2bb0e51243-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v2] zram: do not forget to endio for partial discard requests
2026-03-31 7:35 [PATCH v2] zram: do not forget to endio for partial discard requests Sergey Senozhatsky
@ 2026-03-31 7:40 ` Qu Wenruo
2026-03-31 7:43 ` Sergey Senozhatsky
2026-03-31 7:40 ` Sergey Senozhatsky
1 sibling, 1 reply; 4+ messages in thread
From: Qu Wenruo @ 2026-03-31 7:40 UTC (permalink / raw)
To: Sergey Senozhatsky, Andrew Morton
Cc: Minchan Kim, Brian Geffon, linux-block, linux-mm,
Christoph Hellwig
在 2026/3/31 18:05, Sergey Senozhatsky 写道:
> As reported by Qu Wenruo, the following
>
> getconf PAGESIZE
> 65536
> blkdiscard -p 4k /dev/zram0
>
> takes literally forever to complete. zram doesn't support
> partial discards and just returns immediately w/o doing any
> discard work in such cases. The problem is that we forget
> to endio on our way out, so blkdiscard sleeps forever in
> submit_bio_wait(). Fix this by adding a missing bio_endio()
> call.
>
> Fixes: 0120dd6e4e202 ("zram: make zram_bio_discard more self-contained")
> Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
> Reported-by: Qu Wenruo <wqu@suse.com>
> Closes: https://lore.kernel.org/linux-block/92361cd3-fb8b-482e-bc89-15ff1acb9a59@suse.com
> Test-by: Qu Wenruo <wqu@suse.com>
> Cc: Christoph Hellwig <hch@lst.de>
And forgot to mention, I'm just a messenger who also did the triage.
The original reporter is Avinesh Kumar <avinesh.kumar@suse.com>, who
noticed a test failure from LTP runs.
The detailed public bugzilla can be found here:
https://bugzilla.suse.com/show_bug.cgi?id=1256530
Thanks,
Qu
> ---
>
> v1->v2:
> - use goto end_bio (Christoph)
>
> drivers/block/zram/zram_drv.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index dcea703a6766..aca67d7144e4 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -2684,7 +2684,7 @@ static void zram_bio_discard(struct zram *zram, struct bio *bio)
> */
> if (offset) {
> if (n <= (PAGE_SIZE - offset))
> - return;
> + goto end_bio;
>
> n -= (PAGE_SIZE - offset);
> index++;
> @@ -2699,6 +2699,7 @@ static void zram_bio_discard(struct zram *zram, struct bio *bio)
> n -= PAGE_SIZE;
> }
>
> +end_bio:
> bio_endio(bio);
> }
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v2] zram: do not forget to endio for partial discard requests
2026-03-31 7:40 ` Qu Wenruo
@ 2026-03-31 7:43 ` Sergey Senozhatsky
0 siblings, 0 replies; 4+ messages in thread
From: Sergey Senozhatsky @ 2026-03-31 7:43 UTC (permalink / raw)
To: Qu Wenruo
Cc: Sergey Senozhatsky, Andrew Morton, Minchan Kim, Brian Geffon,
linux-block, linux-mm, Christoph Hellwig
On (26/03/31 18:10), Qu Wenruo wrote:
> And forgot to mention, I'm just a messenger who also did the triage.
>
> The original reporter is Avinesh Kumar <avinesh.kumar@suse.com>, who noticed
> a test failure from LTP runs.
Cc-ed Avinesh on the v3.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] zram: do not forget to endio for partial discard requests
2026-03-31 7:35 [PATCH v2] zram: do not forget to endio for partial discard requests Sergey Senozhatsky
2026-03-31 7:40 ` Qu Wenruo
@ 2026-03-31 7:40 ` Sergey Senozhatsky
1 sibling, 0 replies; 4+ messages in thread
From: Sergey Senozhatsky @ 2026-03-31 7:40 UTC (permalink / raw)
To: Sergey Senozhatsky
Cc: Andrew Morton, Minchan Kim, Brian Geffon, linux-block, linux-mm,
Qu Wenruo, Christoph Hellwig
On (26/03/31 16:35), Sergey Senozhatsky wrote:
> As reported by Qu Wenruo, the following
>
> getconf PAGESIZE
> 65536
> blkdiscard -p 4k /dev/zram0
>
> takes literally forever to complete. zram doesn't support
> partial discards and just returns immediately w/o doing any
> discard work in such cases. The problem is that we forget
> to endio on our way out, so blkdiscard sleeps forever in
> submit_bio_wait(). Fix this by adding a missing bio_endio()
> call.
The last sentence should be something like "Fix this by jumping to endio
label which calls bio_endio()"
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-31 7:43 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-31 7:35 [PATCH v2] zram: do not forget to endio for partial discard requests Sergey Senozhatsky
2026-03-31 7:40 ` Qu Wenruo
2026-03-31 7:43 ` Sergey Senozhatsky
2026-03-31 7:40 ` Sergey Senozhatsky
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox