imsm: FIX: Report correct array size during reshape

When reshape is started imsm stores new size in metadata.
mdadm requires "old" size to proper initialization restarted array.

When reshape is in progress getinfo_super_imsm_volume() should report
computed array size value instead array size stored in metatda.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Adam Kwolek 2011-02-22 15:13:31 +01:00 committed by NeilBrown
parent d2e6d5d65b
commit 75156c4690
1 changed files with 13 additions and 0 deletions

View File

@ -1806,6 +1806,19 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info,
dprintf("IMSM: General Migration checkpoint : %llu "
"(%llu) -> read reshape progress : %llu\n",
units, blocks_per_unit, info->reshape_progress);
unsigned long long array_blocks;
int used_disks;
used_disks = imsm_num_data_members(dev, 1);
if (used_disks > 0) {
array_blocks = map->blocks_per_member *
used_disks;
/* round array size down to closest MB
*/
info->custom_array_size = (array_blocks
>> SECT_PER_MB_SHIFT)
<< SECT_PER_MB_SHIFT;
}
}
case MIGR_VERIFY:
/* we could emulate the checkpointing of