[PATCH] imsm: fix: correct adding and activation of spare disks

Subsystems: the rest

STALE5414d

2 messages, 2 authors, 2011-10-05 · open the first message on its own page

[PATCH] imsm: fix: correct adding and activation of spare disks

From: Lukasz Dorau <hidden>
Date: 2011-10-04 14:56:54

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 <redacted>
---
 super-intel.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/super-intel.c b/super-intel.c
index 7de207a..3185e91 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -6672,9 +6672,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;
  
@@ -6711,8 +6711,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)

Re: [PATCH] imsm: fix: correct adding and activation of spare disks

From: NeilBrown <hidden>
Date: 2011-10-05 03:19:14

On Tue, 04 Oct 2011 16:56:54 +0200 Lukasz Dorau [off-list ref]
wrote:
quoted hunk
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 <redacted>
---
 super-intel.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/super-intel.c b/super-intel.c
index 7de207a..3185e91 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -6672,9 +6672,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;
  
@@ -6711,8 +6711,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)

applied, thanks,

NeilBrown
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help