md/raid6: support read-modify-write
v3: s-o-b comment
Once again thanks to an older patch from Kumar Sundararajan and
Dan Williams that helped me to understand RAID6 logic inside md
better. Everything is based on ideas & discussions that started
with http://marc.info/?l=linux-raid&m=136624783417452&w=1
Another try to implement RMW support for RAID6. This time improve
syndrome calculation too. A few things to note:
1) Patches are based on official 3.16 kernel git.
2) The required optimized syndrome functions were implemented if
possible. Generic & SSE2 are the ones that I could write & test
on my machine. If you want to test/benchmark this patch ensure
that you force select one of the two. Programmers with appropriate
hardware in their hands are encouraged to send the missing
algorithms.
3) raid6 test program was enhanced to verify algorithm correctness.
Additionaly this release was checked with a self written single
threaded test tool I called wprd (write predictable random data).
Checked features include raid expansion, rebuild of failed drives,
different RAID6 geometries, ... /dev/md0 and the underlying block
devices contents were checked with sha256sum against an expected
result of the unpatched module. Knock on wood so far no failures.
Thanks Neil for your support.
Markus