Mariusz, >>> One potential solution for that is to change type of some queue limits >>> (at least discard_granularity and discard_alignment, maybe more, like >>> max_discard_sectors?) from 32 bits to 64 bits. You're still restricted by the max bio size which is 32 bits on 32-bit platforms. > Let me give you an example with io_min (it works also for other params): > We've got RAID 0 with 2 disks and 32KiB chunk size. Each member disk > reports io_min=64KiB. blk_stack_limits takes max value from set of chunk > size and members io_min > t->io_min = max(t->io_min, b->io_min); > so new array's io_min will be equal to 64KiB. Such request will be split > for both array members, each device will get 32KiB request and it is not > enough for them to meet minimum io size requirement. When this was written, there was a clear benefit giving priority to the MD/DM topology over any values reported by the hardware. I.e. the performance was much better when honoring the MD stripe chunk and stripe size over any values reported by the underlying devices. This was true for both disk drives and RAID devices that reported the relevant issues. That's why the stacking works the way it does. For your particular example, I'd say that if your device reports an io_min of 64KB, then it's a user error to create an MD device with a stripe chunk of 32KB. mdadm should discourage creating such a configuration. -- Martin K. Petersen Oracle Linux Engineering -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html