[PATCH v2 0/5] block/md/dm: set chunk_sectors from stacked dev stripe size

John Garry posted 5 patches 3 months, 3 weeks ago
There is a newer version of this series
block/blk-settings.c   | 60 ++++++++++++++++++++++++++----------------
drivers/md/dm-stripe.c |  1 +
drivers/md/raid0.c     |  1 +
drivers/md/raid10.c    |  1 +
4 files changed, 40 insertions(+), 23 deletions(-)
[PATCH v2 0/5] block/md/dm: set chunk_sectors from stacked dev stripe size
Posted by John Garry 3 months, 3 weeks ago
This value in io_min is used to configure any atomic write limit for the
stacked device. The idea is that the atomic write unit max is a
power-of-2 factor of the stripe size, and the stripe size is available
in io_min.

Using io_min causes issues, as:
a. it may be mutated
b. the check for io_min being set for determining if we are dealing with
a striped device is hard to get right, as reported in [0].

This series now sets chunk_sectors limit to share stripe size.

[0] https://lore.kernel.org/linux-block/888f3b1d-7817-4007-b3b3-1a2ea04df771@linux.ibm.com/T/#mecca17129f72811137d3c2f1e477634e77f06781

Based on v6.16-rc2

Differences to RFC:
- sanitize chunk_sectors for atomic write limits
- set chunk_sectors in stripe_io_hints()

John Garry (5):
  block: sanitize chunk_sectors for atomic write limits
  md/raid0: set chunk_sectors limit
  md/raid10: set chunk_sectors limit
  dm-stripe: limit chunk_sectors to the stripe size
  block: use chunk_sectors when evaluating stacked atomic write limits

 block/blk-settings.c   | 60 ++++++++++++++++++++++++++----------------
 drivers/md/dm-stripe.c |  1 +
 drivers/md/raid0.c     |  1 +
 drivers/md/raid10.c    |  1 +
 4 files changed, 40 insertions(+), 23 deletions(-)

-- 
2.31.1
Re: [PATCH v2 0/5] block/md/dm: set chunk_sectors from stacked dev stripe size
Posted by Nilay Shroff 3 months, 2 weeks ago

On 6/18/25 2:07 PM, John Garry wrote:
> This value in io_min is used to configure any atomic write limit for the
> stacked device. The idea is that the atomic write unit max is a
> power-of-2 factor of the stripe size, and the stripe size is available
> in io_min.
> 
> Using io_min causes issues, as:
> a. it may be mutated
> b. the check for io_min being set for determining if we are dealing with
> a striped device is hard to get right, as reported in [0].
> 
> This series now sets chunk_sectors limit to share stripe size.
> 
> [0] https://lore.kernel.org/linux-block/888f3b1d-7817-4007-b3b3-1a2ea04df771@linux.ibm.com/T/#mecca17129f72811137d3c2f1e477634e77f06781
> 
> Based on v6.16-rc2

I have validated this patchset using an NVMe disk supporting atomic write and
native NVMe multipath. I have also validated dm-stripe and raid configuration.
Overall the patchset looks good to me and fixes the issue I posted[1] earlier 
with my NVMe disk.

[1]: https://lore.kernel.org/linux-block/888f3b1d-7817-4007-b3b3-1a2ea04df771@linux.ibm.com/T/#mecca17129f72811137d3c2f1e477634e77f06781

Thanks,
--Nilay
Re: [PATCH v2 0/5] block/md/dm: set chunk_sectors from stacked dev stripe size
Posted by John Garry 3 months, 2 weeks ago
On 18/06/2025 09:37, John Garry wrote:
> This value in io_min is used to configure any atomic write limit for the
> stacked device. The idea is that the atomic write unit max is a
> power-of-2 factor of the stripe size, and the stripe size is available
> in io_min.
> 
> Using io_min causes issues, as:
> a. it may be mutated
> b. the check for io_min being set for determining if we are dealing with
> a striped device is hard to get right, as reported in [0].
> 
> This series now sets chunk_sectors limit to share stripe size.

Any more comments here? It would be good to have the md/raid0 and 
md/raid10 changes checked by the md maintainers.

Thanks

> 
> [0] https://lore.kernel.org/linux-block/888f3b1d-7817-4007-b3b3-1a2ea04df771@linux.ibm.com/T/#mecca17129f72811137d3c2f1e477634e77f06781
> 
> Based on v6.16-rc2
> 
> Differences to RFC:
> - sanitize chunk_sectors for atomic write limits
> - set chunk_sectors in stripe_io_hints()
> 
> John Garry (5):
>    block: sanitize chunk_sectors for atomic write limits
>    md/raid0: set chunk_sectors limit
>    md/raid10: set chunk_sectors limit
>    dm-stripe: limit chunk_sectors to the stripe size
>    block: use chunk_sectors when evaluating stacked atomic write limits
> 
>   block/blk-settings.c   | 60 ++++++++++++++++++++++++++----------------
>   drivers/md/dm-stripe.c |  1 +
>   drivers/md/raid0.c     |  1 +
>   drivers/md/raid10.c    |  1 +
>   4 files changed, 40 insertions(+), 23 deletions(-)
>
Re: [PATCH v2 0/5] block/md/dm: set chunk_sectors from stacked dev stripe size
Posted by John Garry 3 months, 1 week ago
On 26/06/2025 10:36, John Garry wrote:
 > On 18/06/2025 09:37, John Garry wrote:

Hi Jens,

Could you kindly consider picking up this series via the block tree?

I was hoping for a maintainer ack on the md raid0/1/10 stuff, but it's 
quite a straightforward change there.

Cheers,
John

>> This value in io_min is used to configure any atomic write limit for the
>> stacked device. The idea is that the atomic write unit max is a
>> power-of-2 factor of the stripe size, and the stripe size is available
>> in io_min.
>>
>> Using io_min causes issues, as:
>> a. it may be mutated
>> b. the check for io_min being set for determining if we are dealing with
>> a striped device is hard to get right, as reported in [0].
>>
>> This series now sets chunk_sectors limit to share stripe size.
> 
> Any more comments here? It would be good to have the md/raid0 and md/ 
> raid10 changes checked by the md maintainers.
> 
> Thanks
> 
>>
>> [0] https://urldefense.com/v3/__https://lore.kernel.org/linux- 
>> block/888f3b1d-7817-4007-b3b3-1a2ea04df771@linux.ibm.com/T/ 
>> *mecca17129f72811137d3c2f1e477634e77f06781__;Iw!!ACWV5N9M2RV99hQ! 
>> I8diqGp3zAZO162eEpQ1SuUsrvAMTWzhbHUSxxn23h3TLcRRTAs3LUDanOeWiK2osXVfFD0HHw4PioWzfd6MhbOnyw$
>> Based on v6.16-rc2
>>
>> Differences to RFC:
>> - sanitize chunk_sectors for atomic write limits
>> - set chunk_sectors in stripe_io_hints()
>>
>> John Garry (5):
>>    block: sanitize chunk_sectors for atomic write limits
>>    md/raid0: set chunk_sectors limit
>>    md/raid10: set chunk_sectors limit
>>    dm-stripe: limit chunk_sectors to the stripe size
>>    block: use chunk_sectors when evaluating stacked atomic write limits
>>
>>   block/blk-settings.c   | 60 ++++++++++++++++++++++++++----------------
>>   drivers/md/dm-stripe.c |  1 +
>>   drivers/md/raid0.c     |  1 +
>>   drivers/md/raid10.c    |  1 +
>>   4 files changed, 40 insertions(+), 23 deletions(-)