summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--super-intel.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/super-intel.c b/super-intel.c
index 7f8dd348..df3184aa 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -1097,6 +1097,13 @@ load_imsm_disk(int fd, struct intel_super *super, char *devname, int keep_fd)
}
}
+ /* no match, maybe a stale failed drive */
+ if (i == super->anchor->num_disks && dl->index >= 0) {
+ dl->disk = *__get_imsm_disk(super->anchor, dl->index);
+ if (__le32_to_cpu(dl->disk.status) & FAILED_DISK)
+ dl->index = -2;
+ }
+
if (alloc)
super->disks = dl;