Re: [PATCH 3/3] Set correct reshape restart position

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 04 Oct 2011 17:54:04 +0200 Adam Kwolek <adam.kwolek@xxxxxxxxx> wrote:

> This patch version is simplified compared to previous one.
> There is no use of freeze_reshape flag in start_reshape(). It is assumed
> that for reshape starting condition reshape_progress field contains
> 0 value /correct start position/. For reshape restart case, it contains
> correct restart position. This approach doesn't make start_reshape()
> difficult to read/manage and /imho/ kernel changes to change mdstat
> reporting behavior are not necessary.
> 
> Setting correct position allows user to see it in the mdstat during
> reshape restart and reshape process is not reported as resync.

Applied, thanks.

NeilBrown


> 
> Signed-off-by: Adam Kwolek <adam.kwolek@xxxxxxxxx>
> ---
> 
>  Grow.c |   17 +++++++++++------
>  1 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/Grow.c b/Grow.c
> index 076375a..44505b3 100644
> --- a/Grow.c
> +++ b/Grow.c
> @@ -696,15 +696,19 @@ static int subarray_set_num(char *container, struct mdinfo *sra, char *name, int
>  	return rc;
>  }
>  
> -int start_reshape(struct mdinfo *sra, int already_running)
> +int start_reshape(struct mdinfo *sra, int already_running, int data_disks)
>  {
>  	int err;
> +	unsigned long long sync_max_to_set;
> +
>  	sysfs_set_num(sra, NULL, "suspend_lo", 0x7FFFFFFFFFFFFFFFULL);
> -	err = sysfs_set_num(sra, NULL, "suspend_hi", 0);
> -	err = err ?: sysfs_set_num(sra, NULL, "suspend_lo", 0);
> +	err = sysfs_set_num(sra, NULL, "suspend_hi", sra->reshape_progress);
> +	err = err ?: sysfs_set_num(sra, NULL, "suspend_lo",
> +				   sra->reshape_progress);
> +	sync_max_to_set = sra->reshape_progress / data_disks;
>  	if (!already_running)
> -		sysfs_set_num(sra, NULL, "sync_min", 0);
> -	err = err ?: sysfs_set_num(sra, NULL, "sync_max", 0);
> +		sysfs_set_num(sra, NULL, "sync_min", sync_max_to_set);
> +	err = err ?: sysfs_set_num(sra, NULL, "sync_max", sync_max_to_set);
>  	if (!already_running)
>  		err = err ?: sysfs_set_str(sra, NULL, "sync_action", "reshape");
>  
> @@ -2241,7 +2245,8 @@ started:
>  		}
>  	}
>  
> -	err = start_reshape(sra, restart);
> +	err = start_reshape(sra, restart,
> +			    info->array.raid_disks - reshape.parity);
>  	if (err) {
>  		fprintf(stderr, 
>  			Name ": Cannot %s reshape for %s\n",

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux