Blame SOURCES/0109-It-should-be-FAILED-when-raid-has-not-enough-active-.patch

ca921c
From db5377883fef8655aac56b5d7ce5408f8ae494e0 Mon Sep 17 00:00:00 2001
ca921c
From: Xiao Ni <xni@redhat.com>
ca921c
Date: Tue, 9 Feb 2021 17:39:51 +0800
ca921c
Subject: [PATCH 1/1] It should be FAILED when raid has not enough active disks
ca921c
ca921c
It can't remove the disk if there are not enough disks. For example, raid5 can't remove the
ca921c
second disk. If the second disk is unplug from machine, it's better show missing and the raid
ca921c
should be FAILED. It's better for administrator to monitor the raid.
ca921c
ca921c
Signed-off-by: Xiao Ni <xni@redhat.com>
ca921c
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
ca921c
---
ca921c
 Detail.c | 14 ++++++++++----
ca921c
 1 file changed, 10 insertions(+), 4 deletions(-)
ca921c
ca921c
diff --git a/Detail.c b/Detail.c
ca921c
index f8dea6f..cd26fb0 100644
ca921c
--- a/Detail.c
ca921c
+++ b/Detail.c
ca921c
@@ -355,9 +355,14 @@ int Detail(char *dev, struct context *c)
ca921c
 	avail = xcalloc(array.raid_disks, 1);
ca921c
 
ca921c
 	for (d = 0; d < array.raid_disks; d++) {
ca921c
-
ca921c
-		if ((disks[d*2].state & (1<
ca921c
-		    (disks[d*2+1].state & (1<
ca921c
+		char *dv, *dv_rep;
ca921c
+		dv = map_dev_preferred(disks[d*2].major,
ca921c
+				disks[d*2].minor, 0, c->prefer);
ca921c
+		dv_rep = map_dev_preferred(disks[d*2+1].major,
ca921c
+				disks[d*2+1].minor, 0, c->prefer);
ca921c
+
ca921c
+		if ((dv && (disks[d*2].state & (1<
ca921c
+		    (dv_rep && (disks[d*2+1].state & (1<
ca921c
 			avail_disks ++;
ca921c
 			avail[d] = 1;
ca921c
 		} else
ca921c
@@ -789,7 +794,8 @@ This is pretty boring
ca921c
 						       &max_devices, n_devices);
ca921c
 			else
ca921c
 				printf("   %s", dv);
ca921c
-		}
ca921c
+		} else if (disk.major | disk.minor)
ca921c
+			printf("   missing");
ca921c
 		if (!c->brief)
ca921c
 			printf("\n");
ca921c
 	}
ca921c
-- 
ca921c
2.7.5
ca921c