On Wed, 16 Jul 2014 12:20:34 +0200 Pawel Baldysiak <pawel.baldysiak@xxxxxxxxx> wrote: > Grow process did not check if reshape is already started > when deciding about restarting. > Sync_action should be checked in this case, and if > reshape is running - restart flag should not be set. > Otherwise, Grow process will fail to write data to > sysfs, and reshape will not be continued. > > Signed-off-by: Pawel Baldysiak <pawel.baldysiak@xxxxxxxxx> > Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@xxxxxxxxx> > --- > Grow.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/Grow.c b/Grow.c > index a2f4f14..9ba7f76 100644 > --- a/Grow.c > +++ b/Grow.c > @@ -2822,6 +2822,7 @@ static int reshape_array(char *container, int fd, char *devname, > unsigned long long array_size; > int done; > struct mdinfo *sra = NULL; > + char buf[20]; > > /* when reshaping a RAID0, the component_size might be zero. > * So try to fix that up. > @@ -2869,7 +2870,9 @@ static int reshape_array(char *container, int fd, char *devname, > goto release; > } > > - if (st->ss->external && restart && (info->reshape_progress == 0)) { > + if (st->ss->external && restart && (info->reshape_progress == 0) && > + !((sysfs_get_str(info, NULL, "sync_action", buf, sizeof(buf)) > 0) && > + (strncmp(buf, "reshape", 7) == 0))) { > /* When reshape is restarted from '0', very begin of array > * it is possible that for external metadata reshape and array > * configuration doesn't happen. > > -- > 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 Applied, thanks. Though I reindented it so that it was more obvious that the '!' applied tot he 'strncmp' as well. NeilBrown
Attachment:
signature.asc
Description: PGP signature