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