summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-12-14 17:31:13 +1100
committerNeil Brown <neilb@suse.de>2006-12-14 17:31:13 +1100
commit583315d9c522c310c89d5640ae884ef7984b9c30 (patch)
treee3a1f9d2e617fc90460b7786fc01e8c255cbe211 /util.c
parent757234466509aae6221c2cb96e8366f41ba7e532 (diff)
downloadmdadm-583315d9c522c310c89d5640ae884ef7984b9c30.tar.gz
mdadm-583315d9c522c310c89d5640ae884ef7984b9c30.tar.xz
mdadm-583315d9c522c310c89d5640ae884ef7984b9c30.zip
Give useful message if raid4/5/6 cannot be started because it is not clean and is also degraded.
Diffstat (limited to 'util.c')
-rw-r--r--util.c12
1 files changed, 9 insertions, 3 deletions
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;
}