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

From: Zizhi Wo

Date: Mon Nov 02 2026 - 03:50:31 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
@@ -63,6 +63,12 @@ static void dump_zones(struct mddev *mddev)
}
}

+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;
@@ -86,9 +92,8 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)
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(
@@ -654,12 +659,8 @@ static int raid0_takeover_check(struct mddev *mddev, int chunk)
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",
--
2.52.0