diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.cI think here "len" refers to the total size of dm target and not the
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;
+
chunk sectors. So we need to modify this and take into account chunk sectors..
We can get chunk sectors, for example, like this:
struct stripe_c *sc = ti->private;
limits->chunk_sectors = sc->chunk_size;
But again struct stripe_c is private to dm-stripe.c and so we can't access it
here directly in dm-table.c Better we add a new callback function for dm target
type under struct target_type and then use that callback to get chunk sector.
struct target_type stripe_target = {
...
.chunk_sectors = stripe_chunk_sectors,
...
}