]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
Give useful message if raid4/5/6 cannot be started because it is not clean and is...
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index 8d06848e60866df42e7ff28d9e0d9858c36c5daf..6148ff8c8fd1506cec4fb79a822c84f8106321e7 100644 (file)
--- 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;
        }