dcavalca / rpms / mdadm

Forked from rpms/mdadm 3 years ago
Clone
Blob Blame History Raw
From 7298c9a6facea469d9e7ed55a7a0806500096415 Mon Sep 17 00:00:00 2001
From: Mariusz Tkaczyk <mariusz.tkaczyk@intel.com>
Date: Thu, 7 Jun 2018 14:47:47 +0200
Subject: [RHEL7.5 PATCH 1/1] Assemble.c Don't ignore faulty disk when array is
 auto assembled.

Since commit 20dc76d15b40 ("imsm: Set disk slot number") mdadm
sets slot number for each disk in imsm array. Now auto-assemble determines
devices using slot number and ignores devices on the same slot that have
older generation number.
It causes infinit loop if failed device is still visible in system
(it has metadata, but it is not merged with exisiting array).

To avoid it, out-of-sync device should be added to the best[]. Later
mdadm adds it as spare to the container.

Imsm doesn't support disk replacement feature, so it can use rooms for
replacements.

Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@intel.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
---
 Assemble.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Assemble.c b/Assemble.c
index e83d550..32e6f6f 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -779,6 +779,8 @@ static int load_devices(struct devs *devices, char *devmap,
 			if (best[i] == -1 || (devices[best[i]].i.events
 					      < devices[devcnt].i.events))
 				best[i] = devcnt;
+			else if (st->ss == &super_imsm)
+				best[i+1] = devcnt;
 		}
 		devcnt++;
 	}
-- 
2.7.4