X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=util.c;h=e5f7a202ba66fd02de8a0bbe5b54bd8b3e931f9e;hp=4ba44e61fd84574a73ea2e63d62c2a10134dbcc6;hb=de5a472ea32867d002558bac0d2d2b4faf45c7c4;hpb=6ef89052d85b8137b8a7100f761d896ae6f61001 diff --git a/util.c b/util.c index 4ba44e61..e5f7a202 100644 --- a/util.c +++ b/util.c @@ -311,10 +311,15 @@ int test_partition_from_id(dev_t id) return rv; } -int enough(int level, int raid_disks, int layout, int clean, - char *avail, int avail_disks) +int enough(int level, int raid_disks, int layout, int clean, char *avail) { int copies, first; + int i; + int avail_disks = 0; + + for (i = 0; i < raid_disks; i++) + avail_disks += !!avail[i]; + switch (level) { case 10: /* This is the tricky one - we need to check @@ -389,7 +394,7 @@ int enough_fd(int fd) } /* This is used on an active array, so assume it is clean */ rv = enough(array.level, array.raid_disks, array.layout, - 1, avail, avail_disks); + 1, avail); free(avail); return rv; }