dm-integrity: set discard_granularity to logical block size
authorMikulas Patocka <mpatocka@redhat.com>
Mon, 20 May 2024 14:48:31 +0000 (16:48 +0200)
committerMike Snitzer <snitzer@kernel.org>
Mon, 20 May 2024 19:49:22 +0000 (15:49 -0400)
dm-integrity could set discard_granularity lower than the logical block
size. This could result in failures when sending discard requests to
dm-integrity.

This fix is needed for kernels prior to 6.10.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reported-by: Eric Wheeler <linux-integrity@lists.ewheeler.net>
Cc: stable@vger.kernel.org # <= 6.9
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
drivers/md/dm-integrity.c

index 7f3dc8ee6ab8dd89945bdafb54cf222c139bd764..417fddebe367a2ea3d705179d70acdc8cf8874c4 100644 (file)
@@ -3492,6 +3492,7 @@ static void dm_integrity_io_hints(struct dm_target *ti, struct queue_limits *lim
                limits->physical_block_size = ic->sectors_per_block << SECTOR_SHIFT;
                blk_limits_io_min(limits, ic->sectors_per_block << SECTOR_SHIFT);
                limits->dma_alignment = limits->logical_block_size - 1;
+               limits->discard_granularity = ic->sectors_per_block << SECTOR_SHIFT;
        }
        limits->max_integrity_segments = USHRT_MAX;
 }