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.
   b720636a58

Reported-by: "Jonathan Harker (Jesusaurus)" <jesusaurus@gentlydownthe.net>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2015-04-08 09:36:55 +10:00
parent d316dba7c9
commit 330d6900bb
1 changed files with 7 additions and 0 deletions

7
util.c
View File

@ -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;