RE: [PATCH] Grow: Do not use grow-continue unit file if reshape is starting

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

 



> On Monday, July 07, 2014 3:06 AM Neil Brown wrote:
> To: Baldysiak, Pawel
> Cc: linux-raid@xxxxxxxxxxxxxxx; Paszkiewicz, Artur
> Subject: Re: [PATCH] Grow: Do not use grow-continue unit file if reshape is
> starting
> 
> On Fri, 4 Jul 2014 08:59:00 +0000 "Baldysiak, Pawel"
> <pawel.baldysiak@xxxxxxxxx> wrote:
> 
> > Mdadm should use mdadm-grow-continue unit file only if reshape is
> > going to be continued. Otherwise, array specific reshape with IMSM
> > metadata will fail to start, due to missing information about ongoing
> > migration - grow-continue will try to start again the reshape process.
> 
> I don't think I agree.  I think mdadm should always use mdadm-grow-
> continue unit file if it is available.
> 
> Please explain in more detail what problem you are seeing.
> 
> NeilBrown
> 

Hi Neil

If we try to do array-specific reshape (e.g. change from level 0 to 5) 
mdadm will impose all changes to metadata and start reshape - before running grow-continue.
After that  grow-continue will see that reshape progress is '0', so will overwrite "restart" by setting it to =0.
Then it will try to impose all changes again and fail - with error:
"Cannot set device shape for /dev/md/vol" - It will be unable to write changes to sysfs,
due to already started reshape (which freeze at '0' progress).

We can try to fix it by moving part of code that runs grow-continue in reshape_array earlier,
 so "start_reshape() " will be executed by grow-continue (I am testing that kind of patch now), 
or forbid running grow-continue when reshape is about to start (patch is tested, attach in my prev mail).

What do you think about that?
Do you have any other idea how to fix this issue?

Thanks
Pawel Baldysiak

> >
> > Signed-off-by: Pawel Baldysiak <pawel.baldysiak@xxxxxxxxx>
> > ---
> >  Grow.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/Grow.c b/Grow.c
> > index a2f4f14..0cd9442 100644
> > --- a/Grow.c
> > +++ b/Grow.c
> > @@ -3272,7 +3272,7 @@ started:
> >  		return 1;
> >  	}
> >
> > -	if (!forked && !check_env("MDADM_NO_SYSTEMCTL"))
> > +	if (restart && !forked && !check_env("MDADM_NO_SYSTEMCTL"))
> >  		if (continue_via_systemd(container ?: sra->sys_name)) {
> >  			free(fdlist);
> >  			free(offsets);

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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