diff options
-rw-r--r-- | Detail.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -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"); } |