From: NeilBrown Date: Wed, 9 Mar 2011 07:50:59 +0000 (+1100) Subject: Grow: don't try to use 'raid_disks' value for a container. X-Git-Tag: mdadm-3.2.1~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eff4954d9a3e067bf495f7ee1bbe957879b732b4;p=thirdparty%2Fmdadm.git Grow: don't try to use 'raid_disks' value for a container. The 'raid_disks' for a container is zero, so subtracting it from the given raid_disks to get delta_disks doesn't make sense. Rather set delta_disks to UnSet and set raid_disks to the requested number of disks. This then gets passed to reshape_super() which can use it as required. Signed-off-by: NeilBrown --- diff --git a/Grow.c b/Grow.c index 32263b0d..e9327226 100644 --- a/Grow.c +++ b/Grow.c @@ -1506,7 +1506,10 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file, info.component_size = size*2; info.new_level = level; info.new_chunk = chunksize * 1024; - if (raid_disks) + if (info.array.level == LEVEL_CONTAINER) { + info.delta_disks = UnSet; + info.array.raid_disks = raid_disks; + } else if (raid_disks) info.delta_disks = raid_disks - info.array.raid_disks; else info.delta_disks = UnSet;