From: Keith Busch <[email protected]> Don't depend on the defaults to be what is desired if the integrity device was set up with 512b sector size. Always set the queue limits to be at least what the device mapper wants.
Signed-off-by: Keith Busch <[email protected]> --- drivers/md/dm-integrity.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c index 8dfd498ed1ffd..d64c15c761d0a 100644 --- a/drivers/md/dm-integrity.c +++ b/drivers/md/dm-integrity.c @@ -4046,19 +4046,14 @@ static void dm_integrity_io_hints(struct dm_target *ti, struct queue_limits *lim { struct dm_integrity_c *ic = ti->private; - if (ic->sectors_per_block > 1) { - limits->logical_block_size = - max(limits->logical_block_size, - ic->sectors_per_block << SECTOR_SHIFT); - limits->physical_block_size = - max(limits->physical_block_size, - ic->sectors_per_block << SECTOR_SHIFT); - limits->io_min = - max(limits->io_min, - ic->sectors_per_block << SECTOR_SHIFT); - limits->dma_alignment = limits->logical_block_size - 1; - limits->discard_granularity = ic->sectors_per_block << SECTOR_SHIFT; - } + limits->logical_block_size = max(limits->logical_block_size, + ic->sectors_per_block << SECTOR_SHIFT); + limits->physical_block_size = max(limits->physical_block_size, + ic->sectors_per_block << SECTOR_SHIFT); + limits->io_min = max(limits->io_min, + ic->sectors_per_block << SECTOR_SHIFT); + limits->dma_alignment = limits->logical_block_size - 1; + limits->discard_granularity = ic->sectors_per_block << SECTOR_SHIFT; if (!ic->internal_hash) { struct blk_integrity *bi = &limits->integrity; -- 2.52.0
