From 330d6900bb4eea5d4dc407c2b547f48caf84f623 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Wed, 8 Apr 2015 09:36:55 +1000 Subject: 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 --- util.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'util.c') diff --git a/util.c b/util.c index 6f1e2b1..cc98d3b 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; -- cgit v1.2.1