Dan Williams d84e0f10d3 md: common infrastructure for running operations with raid5_run_ops
All the handle_stripe operations that are to be transitioned to use
raid5_run_ops need a method to coherently gather work under the stripe-lock
and hand that work off to raid5_run_ops.  The 'get_stripe_work' routine
runs under the lock to read all the bits in sh->ops.pending that do not
have the corresponding bit set in sh->ops.ack.  This modified 'pending'
bitmap is then passed to raid5_run_ops for processing.

The transition from 'ack' to 'completion' does not need similar protection
as the existing release_stripe infrastructure will guarantee that
handle_stripe will run again after a completion bit is set, and
handle_stripe can tolerate a sh->ops.completed bit being set while the lock
is held.

A call to async_tx_issue_pending_all() is added to raid5d to kick the
offload engines once all pending stripe operations work has been submitted.
This enables batching of the submission and completion of operations.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Acked-By: NeilBrown <neilb@suse.de>
2007-07-13 08:06:16 -07:00
..
2007-07-02 21:06:48 -07:00
2007-06-08 12:41:08 -07:00
2007-07-13 08:06:14 -07:00
2007-07-08 15:21:58 +02:00
2007-06-08 17:23:33 -07:00
2007-07-04 15:24:39 -07:00
2007-06-04 17:54:09 -07:00
2007-05-21 09:18:19 -07:00
2007-05-08 13:37:51 +10:00
2007-06-20 19:12:42 -04:00
2007-07-02 10:12:34 -04:00
2007-06-08 17:23:33 -07:00
2007-06-28 11:34:54 -07:00