From 583315d9c522c310c89d5640ae884ef7984b9c30 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Thu, 14 Dec 2006 17:31:13 +1100 Subject: Give useful message if raid4/5/6 cannot be started because it is not clean and is also degraded. --- util.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'util.c') diff --git a/util.c b/util.c index 8d06848..6148ff8 100644 --- a/util.c +++ b/util.c @@ -170,7 +170,7 @@ void remove_partitions(int fd) #endif } -int enough(int level, int raid_disks, int layout, +int enough(int level, int raid_disks, int layout, int clean, char *avail, int avail_disks) { int copies, first; @@ -205,9 +205,15 @@ int enough(int level, int raid_disks, int layout, return avail_disks >= 1; case 4: case 5: - return avail_disks >= raid_disks-1; + if (clean) + return avail_disks >= raid_disks-1; + else + return avail_disks >= raid_disks; case 6: - return avail_disks >= raid_disks-2; + if (clean) + return avail_disks >= raid_disks-2; + else + return avail_disks >= raid_disks; default: return 0; } -- cgit