async_tx: fix asynchronous raid6 recovery for ddf layouts
authorDan Williams <dan.j.williams@intel.com>
Mon, 19 Oct 2009 21:05:12 +0000 (14:05 -0700)
committerDan Williams <dan.j.williams@intel.com>
Tue, 20 Oct 2009 06:34:46 +0000 (23:34 -0700)
commitda17bf4306fd3a52e938b121df82a7baa10eb282
treec5e5056287547e6674b63c690c911367e76f8d09
parent030b07720be0f3bfada12ff6bfa3c61a91212f32
async_tx: fix asynchronous raid6 recovery for ddf layouts

The raid6 recovery code currently requires special handling of the
4-disk and 5-disk recovery scenarios for the native layout.  Quoting
from commit 0a82a623:

     In these situations the default N-disk algorithm will present
     0-source or 1-source operations to dma devices.  To cover for
     dma devices where the minimum source count is 2 we implement
     4-disk and 5-disk handling in the recovery code.

The ddf layout presents disks=6 and disks=7 to the recovery code in
these situations.  Instead of looking at the number of disks count the
number of non-zero sources in the list and call the special case code
when the number of non-failed sources is 0 or 1.

[neilb@suse.de: replace 'ddf' flag with counting good sources]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
crypto/async_tx/async_raid6_recov.c