From: NeilBrown Date: Tue, 7 Apr 2015 23:36:55 +0000 (+1000) Subject: Assemble: allow a RAID4 to assemble easily when parity devices is missing. X-Git-Tag: mdadm-3.3.3~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=330d6900bb4eea5d4dc407c2b547f48caf84f623;p=thirdparty%2Fmdadm.git Assemble: allow a RAID4 to assemble easily when parity devices is missing. If the parity device of a RAID4 is missing, then there is no immediate risk to data. So it doesn't matter if the array is dirty or not. This can be important when reshaping a RAID0, and is a much better solution that that in the resent-reverted. b720636a5849397dbc6dc1b0f0b671d17034a28b Reported-by: "Jonathan Harker (Jesusaurus)" Signed-off-by: NeilBrown --- diff --git a/util.c b/util.c index 6f1e2b10..cc98d3ba 100644 --- a/util.c +++ b/util.c @@ -368,6 +368,13 @@ int enough(int level, int raid_disks, int layout, int clean, char *avail) case 1: return avail_disks >= 1; case 4: + if (avail_disks == raid_disks - 1 && + !avail[raid_disks - 1]) + /* If just the parity device is missing, then we + * have enough, even if not clean + */ + return 1; + /* FALL THROUGH */ case 5: if (clean) return avail_disks >= raid_disks-1;