From: NeilBrown Date: Wed, 9 Mar 2011 07:53:09 +0000 (+1100) Subject: Grow: don't let analyse_change see new level from metadata. X-Git-Tag: mdadm-3.2.1~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3cb2aed250ba4715b6906da134a6f1c860cda975;p=thirdparty%2Fmdadm.git Grow: don't let analyse_change see new level from metadata. This is a bit of a hack - probably analyse change needs to be re-written a bit to handle this properly. However when the metadata deduced the intermediate state for a reshaping array, the 'new_level' it sets should not be used to interpret the 'delta_disks' number. So in that case, hide the new_level while calling analyse_change. Signed-off-by: NeilBrown --- diff --git a/Grow.c b/Grow.c index e9327226..40cb9291 100644 --- a/Grow.c +++ b/Grow.c @@ -1649,7 +1649,13 @@ static int reshape_array(char *container, int fd, char *devname, int done; struct mdinfo *sra = NULL; - msg = analyse_change(info, &reshape); + if (info->reshape_active) { + int new_level = info->new_level; + info->new_level = UnSet; + msg = analyse_change(info, &reshape); + info->new_level = new_level; + } else + msg = analyse_change(info, &reshape); if (msg) { fprintf(stderr, Name ": %s\n", msg); goto release;