diff options
-rw-r--r-- | super-intel.c | 7 |
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; |