Re: [PATCH] md: skip redundant raid_disks update when value is unchanged

"Yu Kuai" <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.raid
Message-ID <[email protected]>
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.

> +	} else if (mddev->reshape_position != MaxSector) {
>   		struct md_rdev *rdev;
>   		int olddisks = mddev->raid_disks - mddev->delta_disks;
>   

-- 
Thansk,
Kuai
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.