imsm: FIX: initalize reshape progress as it is stored in metatdata
reshape prodess cannot be restarted due to no checkpoint information in mdinfo. When metadata is read during reshape process or reshape restart, rehape_progress (mdinfo field) has to be initialized to value stored in metadata. This allows start reshape from stored in metadata checkpoint. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
c21e737ba1
commit
d2e6d5d65b
|
@ -1784,6 +1784,7 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info,
|
|||
else
|
||||
info->delta_disks = 0;
|
||||
|
||||
info->reshape_progress = 0;
|
||||
if (map_to_analyse->map_state == IMSM_T_STATE_UNINITIALIZED ||
|
||||
dev->vol.dirty) {
|
||||
info->resync_start = 0;
|
||||
|
@ -1797,6 +1798,15 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info,
|
|||
info->resync_start = blocks_per_unit * units;
|
||||
break;
|
||||
}
|
||||
case MIGR_GEN_MIGR: {
|
||||
__u64 blocks_per_unit = blocks_per_migr_unit(dev);
|
||||
__u64 units = __le32_to_cpu(dev->vol.curr_migr_unit);
|
||||
|
||||
info->reshape_progress = blocks_per_unit * units;
|
||||
dprintf("IMSM: General Migration checkpoint : %llu "
|
||||
"(%llu) -> read reshape progress : %llu\n",
|
||||
units, blocks_per_unit, info->reshape_progress);
|
||||
}
|
||||
case MIGR_VERIFY:
|
||||
/* we could emulate the checkpointing of
|
||||
* 'sync_action=check' migrations, but for now
|
||||
|
@ -1804,7 +1814,6 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info,
|
|||
*/
|
||||
case MIGR_REBUILD:
|
||||
/* this is handled by container_content_imsm() */
|
||||
case MIGR_GEN_MIGR:
|
||||
case MIGR_STATE_CHANGE:
|
||||
/* FIXME handle other migrations */
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue