diff options
author | Adam Kwolek <adam.kwolek@intel.com> | 2011-03-09 09:03:54 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-03-09 09:03:54 +1100 |
commit | 633b5610736533f6ba49206803ad00705e6cd9bd (patch) | |
tree | 9b9cb39e2cae0d58e553dbd6d7e02fc7f43ae114 /super-intel.c | |
parent | 493f5dd6b249da3b92822f9e8ee0f20b17b131ce (diff) |
imsm: FIX: Mark checkpoint and array state clean during reshape
Array state has to be managed during reshape based on consistent flag.
To achieve this existing code will be reused. Currently existing code for
blocks_per_unit calculation can be removed
and existing code can be reused also.
Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'super-intel.c')
-rw-r--r-- | super-intel.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/super-intel.c b/super-intel.c index 90faf279..cd409e92 100644 --- a/super-intel.c +++ b/super-intel.c @@ -5243,18 +5243,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent) */ if (a->curr_action == reshape) { /* still reshaping, maybe update curr_migr_unit */ - long long blocks_per_unit = blocks_per_migr_unit(dev); - long long unit = a->last_checkpoint; - if (blocks_per_unit) { - unit /= blocks_per_unit; - if (unit > - __le32_to_cpu(dev->vol.curr_migr_unit)) { - dev->vol.curr_migr_unit = - __cpu_to_le32(unit); - super->updates_pending++; - } - } - return 0; + goto mark_checkpoint; } else { if (a->last_checkpoint == 0 && a->prev_action == reshape) { /* for some reason we aborted the reshape. @@ -5288,7 +5277,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent) */ a->check_reshape = 1; -} + } /* finalize online capacity expansion/reshape */ for (mdi = a->info.devs; mdi; mdi = mdi->next) imsm_set_disk(a, @@ -5331,6 +5320,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent) super->updates_pending++; } +mark_checkpoint: /* check if we can update curr_migr_unit from resync_start, recovery_start */ blocks_per_unit = blocks_per_migr_unit(dev); if (blocks_per_unit) { |