diff options
author | NeilBrown <neilb@suse.de> | 2011-03-09 08:50:59 +0100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-03-09 08:50:59 +0100 |
commit | eff4954d9a3e067bf495f7ee1bbe957879b732b4 (patch) | |
tree | 94639534474c8e7da618ec4f66c24d98599d3298 /Grow.c | |
parent | Grow: only check 'native format' when really needed. (diff) | |
download | mdadm-eff4954d9a3e067bf495f7ee1bbe957879b732b4.tar.xz mdadm-eff4954d9a3e067bf495f7ee1bbe957879b732b4.zip |
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 <neilb@suse.de>
Diffstat (limited to 'Grow.c')
-rw-r--r-- | Grow.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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; |