[PATCH 2/3] md/raid0: factor out raid0_member_sectors()

From: Zizhi Wo

Date: Fri Oct 16 2026 - 21:05:39 EST


From: Zizhi Wo <wozizhi@xxxxxxxxxx>

create_strip_zones() and the takeover coverage check both compute the size
a member contributes to a raid0 array. Pull that into a small helper so the
two sites share one definition.

No functional change.

Signed-off-by: Zizhi Wo <wozizhi@xxxxxxxxxx>
---
drivers/md/raid0.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index fccc62a5fecc..c96ee54f9acc 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -61,10 +61,16 @@ static void dump_zones(struct mddev *mddev)
(unsigned long long)zone_size>>1);
zone_start = conf->strip_zone[j].zone_end;
}
}

+static sector_t raid0_member_sectors(sector_t sectors, unsigned int chunk)
+{
+ sector_div(sectors, chunk);
+ return sectors * chunk;
+}
+
static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)
{
int i, c, err;
sector_t curr_zone_end, sectors;
struct md_rdev *smallest, *rdev1, *rdev2, *rdev, **dev;
@@ -84,13 +90,12 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)
mdname(mddev),
rdev1->bdev);
c = 0;

/* round size to chunk_size */
- sectors = rdev1->sectors;
- sector_div(sectors, mddev->chunk_sectors);
- rdev1->sectors = sectors * mddev->chunk_sectors;
+ rdev1->sectors = raid0_member_sectors(rdev1->sectors,
+ mddev->chunk_sectors);

if (mddev_is_dm(mddev))
blksize = max(blksize, queue_logical_block_size(
rdev1->bdev->bd_disk->queue));

@@ -652,16 +657,12 @@ static int raid0_takeover_check(struct mddev *mddev, int chunk)
{
sector_t capacity = get_capacity(mddev->gendisk);
sector_t coverage = 0;
struct md_rdev *rdev;

- rdev_for_each(rdev, mddev) {
- sector_t sectors = rdev->sectors;
-
- sector_div(sectors, chunk);
- coverage += sectors * chunk;
- }
+ rdev_for_each(rdev, mddev)
+ coverage += raid0_member_sectors(rdev->sectors, chunk);

if (coverage < capacity) {
pr_warn("md/raid0:%s: refusing takeover, zones cover only %llu of %llu sectors\n",
mdname(mddev), (unsigned long long)coverage,
(unsigned long long)capacity);
--
2.52.0