]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Detail.c
It should be FAILED when raid has not enough active disks
[thirdparty/mdadm.git] / Detail.c
index f8dea6fdf715320d679d1ccf28eba210ba7a4d41..cd26fb0f6271efd4f91e82cecaba27bd9f4e9263 100644 (file)
--- a/Detail.c
+++ b/Detail.c
@@ -355,9 +355,14 @@ int Detail(char *dev, struct context *c)
        avail = xcalloc(array.raid_disks, 1);
 
        for (d = 0; d < array.raid_disks; d++) {
-
-               if ((disks[d*2].state & (1<<MD_DISK_SYNC)) ||
-                   (disks[d*2+1].state & (1<<MD_DISK_SYNC))) {
+               char *dv, *dv_rep;
+               dv = map_dev_preferred(disks[d*2].major,
+                               disks[d*2].minor, 0, c->prefer);
+               dv_rep = map_dev_preferred(disks[d*2+1].major,
+                               disks[d*2+1].minor, 0, c->prefer);
+
+               if ((dv && (disks[d*2].state & (1<<MD_DISK_SYNC))) ||
+                   (dv_rep && (disks[d*2+1].state & (1<<MD_DISK_SYNC)))) {
                        avail_disks ++;
                        avail[d] = 1;
                } else
@@ -789,7 +794,8 @@ This is pretty boring
                                                       &max_devices, n_devices);
                        else
                                printf("   %s", dv);
-               }
+               } else if (disk.major | disk.minor)
+                       printf("   missing");
                if (!c->brief)
                        printf("\n");
        }