FIX: Set proper raid disks during migration

During migration raid_disks field contains new disks number now.
It should be set old disks number first and then new disks number
to allow md to calculate e.g. delta_disks parameter.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Adam Kwolek 2011-04-18 10:31:15 +10:00 committed by NeilBrown
parent 178b8f353c
commit a5062b1cb6
1 changed files with 5 additions and 2 deletions

View File

@ -531,6 +531,7 @@ int sysfs_set_array(struct mdinfo *info, int vers)
{
int rv = 0;
char ver[100];
int raid_disks = info->array.raid_disks;
ver[0] = 0;
if (info->array.major_version == -1 &&
@ -549,7 +550,9 @@ int sysfs_set_array(struct mdinfo *info, int vers)
return 0; /* FIXME */
rv |= sysfs_set_str(info, NULL, "level",
map_num(pers, info->array.level));
rv |= sysfs_set_num(info, NULL, "raid_disks", info->array.raid_disks);
if (info->reshape_active && info->delta_disks != UnSet)
raid_disks -= info->delta_disks;
rv |= sysfs_set_num(info, NULL, "raid_disks", raid_disks);
rv |= sysfs_set_num(info, NULL, "chunk_size", info->array.chunk_size);
rv |= sysfs_set_num(info, NULL, "layout", info->array.layout);
rv |= sysfs_set_num(info, NULL, "component_size", info->component_size/2);
@ -576,7 +579,7 @@ int sysfs_set_array(struct mdinfo *info, int vers)
rv |= sysfs_set_num(info, NULL, "chunk_size", info->new_chunk);
rv |= sysfs_set_num(info, NULL, "layout", info->new_layout);
rv |= sysfs_set_num(info, NULL, "raid_disks",
info->array.raid_disks + info->delta_disks);
info->array.raid_disks);
/* We don't set 'new_level' here. That can only happen
* once the reshape completes.
*/