It should be FAILED when raid has not enough active disks

It can't remove the disk if there are not enough disks. For example, raid5 can't remove the
second disk. If the second disk is unplug from machine, it's better show missing and the raid
should be FAILED. It's better for administrator to monitor the raid.

Signed-off-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
Xiao Ni 2021-02-09 17:39:51 +08:00 committed by Jes Sorensen
parent c7b8547c70
commit db5377883f
1 changed files with 9 additions and 3 deletions

View File

@ -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++) {
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 ((disks[d*2].state & (1<<MD_DISK_SYNC)) ||
(disks[d*2+1].state & (1<<MD_DISK_SYNC))) {
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");
}