md/raid10: fix the 'new' raid10 layout to work correctly.
authorNeilBrown <neilb@suse.com>
Thu, 22 Oct 2015 02:20:15 +0000 (13:20 +1100)
committerNeilBrown <neilb@suse.com>
Sat, 24 Oct 2015 05:24:25 +0000 (16:24 +1100)
commit8bce6d35b308d73cdb2ee273c95d711a55be688c
tree01b072a83736bae1455d7bb5743d271f91cd6325
parentc340702ca26a628832fade4f133d8160a55c29cc
md/raid10: fix the 'new' raid10 layout to work correctly.

In Linux 3.9 we introduce a new 'far' layout for RAID10 which was
supposed to rotate the replicas differently and so provide better
resilience.  In particular it could survive more combinations of 2
drive failures.

Unfortunately. due to a coding error, this some did what was wanted,
sometimes improved less than we hoped, and sometimes - in very
unlikely circumstances - put multiple replicas on the same device so
the redundancy was harmed.

No public user-space tool has created arrays using this layout so it
is very unlikely that zero-redundancy arrays actually exist.  Probably
no arrays using any form of the new layout exist.  But we cannot be
certain.

So use another bit in the 'layout' number and introduce a bug-fixed
version of the layout.
Also when assembling an array, if it has a zero-redundancy layout,
give a warning.

Reported-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.com>
drivers/md/raid10.c