summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Tkaczyk <mariusz.tkaczyk@intel.com>2018-06-07 14:47:47 +0200
committerJes Sorensen <jsorensen@fb.com>2018-06-08 12:47:14 -0400
commit7298c9a6facea469d9e7ed55a7a0806500096415 (patch)
treed8422badfe95beaa66d4f38d6ccae53eec336e29
parent28156667e5c7dc3c7b978f2d58c2a427038fedda (diff)
downloadmdadm-7298c9a6facea469d9e7ed55a7a0806500096415.tar.gz
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>
-rw-r--r--Assemble.c2
1 files changed, 2 insertions, 0 deletions
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++;
}