From b303fe21b5ad9a239a2984649446fce060918571 Mon Sep 17 00:00:00 2001 From: Lukasz Dorau Date: Wed, 5 Oct 2011 14:17:38 +1100 Subject: [PATCH] imsm: fix: correct adding and activation of spare disks During activation of spare disks, only one of all available spare disks can be activated at this moment. It causes that for example during take-over from RAID0 with 2 disks to RAID10, only one of two spare disks is taken for recovery and a degraded RAID10 array with only 3 of 4 working disks is created. It has been fixed by adding more than one of all available spare disks and saving them in additional_test_list which is passed to imsm_add_spare(). Signed-off-by: Lukasz Dorau Signed-off-by: NeilBrown --- super-intel.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/super-intel.c b/super-intel.c index e761819c..ce067a2c 100644 --- a/super-intel.c +++ b/super-intel.c @@ -6671,9 +6671,9 @@ static struct mdinfo *imsm_activate_spare(struct active_array *a, */ dl = imsm_readd(super, i, a); if (!dl) - dl = imsm_add_spare(super, i, a, 0, NULL); + dl = imsm_add_spare(super, i, a, 0, rv); if (!dl) - dl = imsm_add_spare(super, i, a, 1, NULL); + dl = imsm_add_spare(super, i, a, 1, rv); if (!dl) continue; @@ -6710,8 +6710,6 @@ static struct mdinfo *imsm_activate_spare(struct active_array *a, num_spares++; dprintf("%x:%x to be %d at %llu\n", dl->major, dl->minor, i, di->data_offset); - - break; } if (!rv) -- 2.39.2