All the infrastructure has already been plumbed to support this for
stacked devices, so just enable the request_queue limits features flag.
A note about chunk sectors for linear arrays:
While it is possible to set a chunk sectors param for building a linear
array, this is for specifying the granularity at which data sectors from
the device are used. It is not the same as a stripe size, like for RAID0.
As such, it is not appropriate to set chunk_sectors request queue limit to
the same value, as chunk_sectors request limit is a boundary for which
requests cannot straddle.
However, request_queue limit max_hw_sectors is set to chunk sectors, which
almost has the same effect as setting chunk_sectors limit.
Signed-off-by: John Garry <john.g.garry@oracle.com>
diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c
index 5d9b081153757..30ac29b990c9b 100644
--- a/drivers/md/md-linear.c
+++ b/drivers/md/md-linear.c
@@ -74,6 +74,7 @@ static int linear_set_limits(struct mddev *mddev)
lim.max_hw_sectors = mddev->chunk_sectors;
lim.max_write_zeroes_sectors = mddev->chunk_sectors;
lim.io_min = mddev->chunk_sectors << 9;
+ lim.features |= BLK_FEAT_ATOMIC_WRITES;
err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY);
if (err)
return err;
--
2.43.5
在 2025/09/04 0:10, John Garry 写道: > All the infrastructure has already been plumbed to support this for > stacked devices, so just enable the request_queue limits features flag. > > A note about chunk sectors for linear arrays: > While it is possible to set a chunk sectors param for building a linear > array, this is for specifying the granularity at which data sectors from > the device are used. It is not the same as a stripe size, like for RAID0. > > As such, it is not appropriate to set chunk_sectors request queue limit to > the same value, as chunk_sectors request limit is a boundary for which > requests cannot straddle. > > However, request_queue limit max_hw_sectors is set to chunk sectors, which > almost has the same effect as setting chunk_sectors limit. > > Signed-off-by: John Garry <john.g.garry@oracle.com> > > diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c > index 5d9b081153757..30ac29b990c9b 100644 > --- a/drivers/md/md-linear.c > +++ b/drivers/md/md-linear.c > @@ -74,6 +74,7 @@ static int linear_set_limits(struct mddev *mddev) > lim.max_hw_sectors = mddev->chunk_sectors; > lim.max_write_zeroes_sectors = mddev->chunk_sectors; > lim.io_min = mddev->chunk_sectors << 9; > + lim.features |= BLK_FEAT_ATOMIC_WRITES; > err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); > if (err) > return err; > LGRM Reviewed-by: Yu Kuai <yukuai3@huawei.com>
On 05/09/2025 10:02, Yu Kuai wrote: > 在 2025/09/04 0:10, John Garry 写道: >> All the infrastructure has already been plumbed to support this for >> stacked devices, so just enable the request_queue limits features flag. >> >> A note about chunk sectors for linear arrays: >> While it is possible to set a chunk sectors param for building a linear >> array, this is for specifying the granularity at which data sectors from >> the device are used. It is not the same as a stripe size, like for RAID0. >> >> As such, it is not appropriate to set chunk_sectors request queue >> limit to >> the same value, as chunk_sectors request limit is a boundary for which >> requests cannot straddle. >> >> However, request_queue limit max_hw_sectors is set to chunk sectors, >> which >> almost has the same effect as setting chunk_sectors limit. >> >> Signed-off-by: John Garry <john.g.garry@oracle.com> >> >> diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c >> index 5d9b081153757..30ac29b990c9b 100644 >> --- a/drivers/md/md-linear.c >> +++ b/drivers/md/md-linear.c >> @@ -74,6 +74,7 @@ static int linear_set_limits(struct mddev *mddev) >> lim.max_hw_sectors = mddev->chunk_sectors; >> lim.max_write_zeroes_sectors = mddev->chunk_sectors; >> lim.io_min = mddev->chunk_sectors << 9; >> + lim.features |= BLK_FEAT_ATOMIC_WRITES; >> err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); >> if (err) >> return err; >> > > LGRM > Reviewed-by: Yu Kuai <yukuai3@huawei.com> > thanks Could I have this picked up now? Maybe it was missed.
Hi, 在 2025/09/23 16:21, John Garry 写道: > On 05/09/2025 10:02, Yu Kuai wrote: >> 在 2025/09/04 0:10, John Garry 写道: >>> All the infrastructure has already been plumbed to support this for >>> stacked devices, so just enable the request_queue limits features flag. >>> >>> A note about chunk sectors for linear arrays: >>> While it is possible to set a chunk sectors param for building a linear >>> array, this is for specifying the granularity at which data sectors from >>> the device are used. It is not the same as a stripe size, like for >>> RAID0. >>> >>> As such, it is not appropriate to set chunk_sectors request queue >>> limit to >>> the same value, as chunk_sectors request limit is a boundary for which >>> requests cannot straddle. >>> >>> However, request_queue limit max_hw_sectors is set to chunk sectors, >>> which >>> almost has the same effect as setting chunk_sectors limit. >>> >>> Signed-off-by: John Garry <john.g.garry@oracle.com> >>> >>> diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c >>> index 5d9b081153757..30ac29b990c9b 100644 >>> --- a/drivers/md/md-linear.c >>> +++ b/drivers/md/md-linear.c >>> @@ -74,6 +74,7 @@ static int linear_set_limits(struct mddev *mddev) >>> lim.max_hw_sectors = mddev->chunk_sectors; >>> lim.max_write_zeroes_sectors = mddev->chunk_sectors; >>> lim.io_min = mddev->chunk_sectors << 9; >>> + lim.features |= BLK_FEAT_ATOMIC_WRITES; >>> err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); >>> if (err) >>> return err; >>> >> >> LGRM >> Reviewed-by: Yu Kuai <yukuai3@huawei.com> >> > > thanks > > Could I have this picked up now? Maybe it was missed. > Already picked last weekend, sorry that I forgot to reply. https://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux.git/commit/?h=md-6.18&id=b481e72d24feac15017b579232370aa4b33d4129 Thanks, Kuai > . >
© 2016 - 2025 Red Hat, Inc.