From: Mariusz Tkaczyk Date: Thu, 7 Jun 2018 12:47:47 +0000 (+0200) Subject: Assemble.c Don't ignore faulty disk when array is auto assembled. X-Git-Tag: mdadm-4.1-rc2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7298c9a6facea469d9e7ed55a7a0806500096415;p=thirdparty%2Fmdadm.git 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 --- diff --git a/Assemble.c b/Assemble.c index e83d550b..32e6f6ff 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++; }