Re: [PATCH] md: skip redundant raid_disks update when value is unchanged
Abd-Alrhman Masalkhi <[email protected]>
| Newsgroups | gmane.linux.kernel,gmane.linux.raid |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Apr 28, 2026 at 16:25 +0800, Yu Kuai wrote: > Hi, > > 在 2026/4/25 16:58, Abd-Alrhman Masalkhi 写道: >> Calling update_raid_disks() with the same value as the current one >> can trigger unnecessary work. For example, RAID1 will reallocate >> resources such as the mempool for r1bio. >> >> Signed-off-by: Abd-Alrhman Masalkhi <[email protected]> >> --- >> It returns -EINVAL for the same value. If silent success is preferred >> instead, please let me know so I adjust its behavior. >> --- >> drivers/md/md.c | 9 ++++++--- >> 1 file changed, 6 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/md/md.c b/drivers/md/md.c >> index 0e55639211f2..cb66c4ebbafa 100644 >> --- a/drivers/md/md.c >> +++ b/drivers/md/md.c >> @@ -4409,9 +4409,12 @@ raid_disks_store(struct mddev *mddev, const char *buf, size_t len) >> err = mddev_suspend_and_lock(mddev); >> if (err) >> return err; >> - if (mddev->pers) >> - err = update_raid_disks(mddev, n); >> - else if (mddev->reshape_position != MaxSector) { >> + if (mddev->pers) { >> + if (n != mddev->raid_disks) >> + err = update_raid_disks(mddev, n); >> + else >> + err = -EINVAL; > > Changing return value in this case is not expected, especially from > success to failure. > I’ll adjust the behavior to return success instead. >> + } else if (mddev->reshape_position != MaxSector) { >> struct md_rdev *rdev; >> int olddisks = mddev->raid_disks - mddev->delta_disks; >> > > -- > Thansk, > Kuai -- Best Regards, Abd-Alrhman