]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super-intel.c
imsm: determine failed indexes from the most up-to-date disk
[thirdparty/mdadm.git] / super-intel.c
index 7f8dd3483271796a3dd5a53381f33a6c7fbf870e..df3184aae000fba5620b40f582505208e8e949ee 100644 (file)
@@ -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;