From 3cb2aed250ba4715b6906da134a6f1c860cda975 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Wed, 9 Mar 2011 18:53:09 +1100 Subject: [PATCH] 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 --- Grow.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Grow.c b/Grow.c index e932722..40cb929 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;