]> git.itanic.dy.fi Git - linux-stable/commitdiff
block: floor the discard granularity to the physical block size
authorChristoph Hellwig <hch@lst.de>
Wed, 3 Jan 2024 08:16:22 +0000 (08:16 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 4 Jan 2024 23:05:49 +0000 (16:05 -0700)
Discarding less than a physical block doesn't make sense.  This fixes
the existing behavior for zram before the recent changes to default
the discard granularity to the logical block size, and is also a
generally useful sanity check.

Fixes: 3753039def5d ("zram: use the default discard granularity")
Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20240103081622.508754-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-settings.c

index d993d20dab3c6db56218f6d13cc7af7608722355..06ea91e51b8b2e554e5ead222abf3ad1b3ded4ef 100644 (file)
@@ -342,6 +342,9 @@ void blk_queue_physical_block_size(struct request_queue *q, unsigned int size)
        if (q->limits.physical_block_size < q->limits.logical_block_size)
                q->limits.physical_block_size = q->limits.logical_block_size;
 
+       if (q->limits.discard_granularity < q->limits.physical_block_size)
+               q->limits.discard_granularity = q->limits.physical_block_size;
+
        if (q->limits.io_min < q->limits.physical_block_size)
                q->limits.io_min = q->limits.physical_block_size;
 }