summaryrefslogtreecommitdiff
path: root/super-intel.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-03-08 17:36:40 +1100
committerNeilBrown <neilb@suse.de>2011-03-08 17:36:40 +1100
commit493f5dd6b249da3b92822f9e8ee0f20b17b131ce (patch)
treefcfed0ab3a235d0958c626b842dc7ba875f45b93 /super-intel.c
parent04fa95230951582a4c5e8f022627d8baebd51af2 (diff)
Allow Grow_continue for whole container as well as single array.
Some grow operations must be applied to a whole container. These are performed one array at a time, so only one array appears to be reshaping. When re-assembling such an array, we need to make sure that when the reshape finished, we move on to the next array. So require metadata to set ->reshape_active = 2 in that case, and use reshape_container to complete the reshape. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/super-intel.c b/super-intel.c
index b55f6ec0..90faf279 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -1764,6 +1764,12 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info,
info->new_layout = imsm_level_to_layout(info->new_level);
info->new_chunk = __le16_to_cpu(map->blocks_per_strip) << 9;
info->delta_disks = map->num_members - prev_map->num_members;
+ if (info->delta_disks) {
+ /* this needs to be applied to every array
+ * in the container.
+ */
+ info->reshape_active = 2;
+ }
/* We shape information that we give to md might have to be
* modify to cope with md's requirement for reshaping arrays.
* For example, when reshaping a RAID0, md requires it to be