OSDN Git Service

dm-crypt: provide dma_alignment limit in io_hints
authorKeith Busch <kbusch@kernel.org>
Thu, 10 Nov 2022 18:44:58 +0000 (10:44 -0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 16 Nov 2022 22:58:11 +0000 (15:58 -0700)
This device mapper needs bio vectors to be sized and memory aligned to
the logical block size. Set the minimum required queue limit
accordingly.

Link: https://lore.kernel.org/linux-block/20221101001558.648ee024@xps.demsh.org/
Fixes: b1a000d3b8ec5 ("block: relax direct io memory alignment")
Reportred-by: Eric Biggers <ebiggers@kernel.org>
Reported-by: Dmitrii Tcvetkov <me@demsh.org>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Mike Snitzer <snitzer@kernel.org>
Link: https://lore.kernel.org/r/20221110184501.2451620-3-kbusch@meta.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/dm-crypt.c

index 159c680..2653516 100644 (file)
@@ -3630,6 +3630,7 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits)
        limits->physical_block_size =
                max_t(unsigned, limits->physical_block_size, cc->sector_size);
        limits->io_min = max_t(unsigned, limits->io_min, cc->sector_size);
+       limits->dma_alignment = limits->logical_block_size - 1;
 }
 
 static struct target_type crypt_target = {