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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.