Re: [PATCH RFC 3/4] dm-stripe: limit chunk_sectors to the stripe size

From: John Garry
Date: Thu Jun 12 2025 - 05:16:49 EST


On 09/06/2025 16:19, Mikulas Patocka wrote:
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 24a857ff6d0b..4f1f7173740c 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -430,6 +430,10 @@ static int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev,
return 0;
}
+ /* For striped types, limit the chunk_sectors to the chunk size */
+ if (dm_target_supports_striped(ti->type))
+ limits->chunk_sectors = len >> SECTOR_SHIFT;
+
len is already in sectors, so why do we shift it right?

Actually what I am passing is not the proper value at all. len holds the sc->stripe_width, and that seems to be md dev size / # stripes. I think that we want chunk_size, right?


Could this logic be moved to the function stripe_io_hints, so that we
don't have to add a new flag for that and that we don't have to modify the
generic dm code?


That would be better. I am going to have to change blk_stack_atomic_writes_limits() to work for that, but I think that code needs to change anyway if the bottom device has its own chunk_sectors (as Nilay mentioned about 4/4).

Thanks,
John