diff options
author | NeilBrown <neilb@suse.de> | 2011-03-08 17:36:40 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-03-08 17:36:40 +1100 |
commit | 493f5dd6b249da3b92822f9e8ee0f20b17b131ce (patch) | |
tree | fcfed0ab3a235d0958c626b842dc7ba875f45b93 /super-intel.c | |
parent | 04fa95230951582a4c5e8f022627d8baebd51af2 (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.c | 6 |
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 |