md/raid6: asynchronous handle_stripe_dirtying6
authorYuri Tikhonov <yur@emcraft.com>
Sun, 30 Aug 2009 02:13:12 +0000 (19:13 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 30 Aug 2009 02:13:12 +0000 (19:13 -0700)
commita9b39a741a7e3b262b9f51fefb68e17b32756999
tree659f32a0377ff241627eedb60816bda283e2233f
parent5599becca4bee7badf605e41fd5bcde76d51f2a4
md/raid6: asynchronous handle_stripe_dirtying6

In the synchronous implementation of stripe dirtying we processed a
degraded stripe with one call to handle_stripe_dirtying6().  I.e.
compute the missing blocks from the other drives, then copy in the new
data and reconstruct the parities.

In the asynchronous case we do not perform stripe operations directly.
Instead, operations are scheduled with flags to be later serviced by
raid_run_ops.  So, for the degraded case the final reconstruction step
can only be carried out after all blocks have been brought up to date by
being read, or computed.  Like the raid5 case schedule_reconstruction()
sets STRIPE_OP_RECONSTRUCT to request a parity generation pass and
through operation chaining can handle compute and reconstruct in a
single raid_run_ops pass.

[dan.j.williams@intel.com: fixup handle_stripe_dirtying6 gating]
Signed-off-by: Yuri Tikhonov <yur@emcraft.com>
Signed-off-by: Ilya Yanok <yanok@emcraft.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/md/raid5.c