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
&max_devices, n_devices);
else
printf(" %s", dv);
- }
+ } else if (disk.major | disk.minor)
+ printf(" missing");
if (!c->brief)
printf("\n");
}