imsm: FIX: only one spare is passed in update

Only one spare is passed in update.
When more than one disk is added first spare is passed multiple times.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Adam Kwolek 2011-01-11 15:04:19 +01:00 committed by NeilBrown
parent ee4beede22
commit bbd24d8616
1 changed files with 5 additions and 1 deletions

View File

@ -6440,6 +6440,7 @@ static int imsm_create_metadata_update_for_reshape(
struct mdinfo *spares = NULL;
int i;
int delta_disks = 0;
struct mdinfo *dev;
dprintf("imsm_update_metadata_for_reshape(enter) raid_disks = %i\n",
geo->raid_disks);
@ -6478,15 +6479,18 @@ static int imsm_create_metadata_update_for_reshape(
dprintf("imsm: %i spares are available.\n\n",
spares->array.spare_disks);
dev = spares->devs;
for (i = 0; i < delta_disks; i++) {
struct mdinfo *dev = spares->devs;
struct dl *dl;
if (dev == NULL)
break;
u->new_disks[i] = makedev(dev->disk.major,
dev->disk.minor);
dl = get_disk_super(super, dev->disk.major, dev->disk.minor);
dl->index = mpb->num_disks;
mpb->num_disks++;
dev = dev->next;
}
/* Now update the metadata so that container_content will find
* the new devices