remove device mapper max_sectors restriction
PATCH 1/1 remove device mapper max_sectors restriction
The maximum size of a bio is restricted by DM to BLK_DEF_MAX_SECTORS although the I/O size can be increased for each member device above this value by using the /sys/block/queue/max_sectors interface.
IMHO the limitation when loading the dm table is unnecessary, the values for sub-devices are checked while set through the sysfs interface and the restrictions of the sub-devices are combined, the minimal values are used for the DM queue. Chopping this additionally to BLK_DEF_MAX_SECTORS makes it impossible to use IOs bigger than 512KB on big RAIDs accessed through multipath, even if the devices may support them. The trivial patch removes this limitation. Sub-devices' max_sectors need to be set before creating the DM device.
Patch is against 2.6.24. For older kernels max_hw_sectors needs to be set additionally.
--- dm-table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/md/dm-table.c renamed from drivers/md/dm-table.c.orig +2 -2
@@ -901,10 +901,10 @@void dm_table_set_restrictions (struct dm_table *t,struct request_queue *q) {/* -* Make sure we obey the optimistic sub devices +* Make sure we obey the minimum of the sub devices * restrictions. */ -blk_queue_max_sectors (q, t->limits.max_sectors); + q->max_sectors = t->limits.max_sectors; q->max_phys_segments = t->limits.max_phys_segments; q->max_hw_segments = t->limits.max_hw_segments; q->hardsect_size = t->limits.hardsect_size;