RE: [PATCH v2 03/11] async_tx: structify submission arguments, add scribble

Sosnowski, Maciej
2009-05-29T13:43:20Z

Dan Williams wrote:
> Prepare the api for the arrival of a new parameter, 'scribble'.  This
> will allow callers to identify scratchpad memory for dma address or page
> address conversions.  As this adds yet another parameter, take this
> opportunity to convert the common submission parameters (flags,
> dependency, callback, and callback argument) into an object that is
> passed by reference.
>
> [ Impact: moves api pass-by-value parameters to a pass-by-reference struct ]
>
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
> ---
>  crypto/async_tx/async_memcpy.c |   21 ++++-----
>  crypto/async_tx/async_memset.c |   23 ++++------
>  crypto/async_tx/async_tx.c     |   34 +++++++--------
>  crypto/async_tx/async_xor.c    |   93 +++++++++++++++++-----------------------
>  drivers/md/raid5.c             |   59 +++++++++++++++----------
>  include/linux/async_tx.h       |   84 +++++++++++++++++++++++-------------
>  6 files changed, 161 insertions(+), 153 deletions(-)

(...)

> @@ -811,13 +818,11 @@ ops_run_postxor(struct stripe_head *sh, struct
> dma_async_tx_descriptor *tx)
>
>        atomic_inc(&sh->count);
>
> -       if (unlikely(count == 1)) {
> -               flags &= ~(ASYNC_TX_XOR_DROP_DST | ASYNC_TX_XOR_ZERO_DST);
> -               tx = async_memcpy(xor_dest, xor_srcs[0], 0, 0, STRIPE_SIZE,
> -                       flags, tx, ops_complete_postxor, sh);
> -       } else
> -               tx = async_xor(xor_dest, xor_srcs, 0, count, STRIPE_SIZE,
> -                       flags, tx, ops_complete_postxor, sh);
> +       init_async_submit(&submit, flags, tx, ops_complete_postxor, sh, NULL);
> +       if (unlikely(count == 1))
> +               tx = async_memcpy(xor_dest, xor_srcs[0], 0, 0, STRIPE_SIZE, &submit);
> +       else
> +               tx = async_xor(xor_dest, xor_srcs, 0, count, STRIPE_SIZE, &submit);
>  }

What about ASYNC_TX_XOR_DROP_DST and ASYNC_TX_XOR_ZERO_DST flags clearing before async_memcpy?

Maciej