From 7298c9a6facea469d9e7ed55a7a0806500096415 Mon Sep 17 00:00:00 2001 From: Mariusz Tkaczyk 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 Signed-off-by: Jes Sorensen --- 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