From: Adam Kwolek Date: Thu, 3 Feb 2011 06:46:17 +0000 (+1100) Subject: imsm: FIX: put expansion finalization in to one place X-Git-Tag: mdadm-3.2.1~137 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=e154ced310878c96700cd0f73e5c5df60e6352b3;p=mdadm.git imsm: FIX: put expansion finalization in to one place When a->last_checkpoint variable can reach array end, reshape finalization can be put in to single place. There is no need to reset migration variables. imsm_set_disk() will call end_migration() and this sets all migration variables to required values. Signed-off-by: Adam Kwolek Signed-off-by: NeilBrown --- diff --git a/super-intel.c b/super-intel.c index 4081071c..c29f37e6 100644 --- a/super-intel.c +++ b/super-intel.c @@ -5174,10 +5174,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent) if (a->last_checkpoint >= a->info.component_size) { unsigned long long array_blocks; int used_disks; - /* it seems the reshape is all done */ - dev->vol.migr_state = 0; - dev->vol.migr_type = 0; - dev->vol.curr_migr_unit = 0; + struct mdinfo *mdi; used_disks = imsm_num_data_members(dev, -1); array_blocks = map->blocks_per_member * used_disks; @@ -5191,8 +5188,15 @@ static int imsm_set_array_state(struct active_array *a, int consistent) * array size */ super->updates_pending++; + + /* finalize online capacity expansion/reshape */ + for (mdi = a->info.devs; mdi; mdi = mdi->next) + imsm_set_disk(a, + mdi->disk.raid_disk, + mdi->curr_state); + imsm_progress_container_reshape(super); - } + } } } @@ -5257,19 +5261,6 @@ static int imsm_set_array_state(struct active_array *a, int consistent) super->updates_pending++; } - /* manage online capacity expansion/reshape */ - if ((a->curr_action != reshape) && - (a->prev_action == reshape)) { - struct mdinfo *mdi; - - /* finalize online capacity expansion/reshape */ - for (mdi = a->info.devs; mdi; mdi = mdi->next) - imsm_set_disk(a, mdi->disk.raid_disk, mdi->curr_state); - - /* check next volume reshape */ - imsm_progress_container_reshape(super); - } - return consistent; }