On Mon, Jun 24, 2013 at 05:54:26PM +0800, Liu Ping Fan wrote:
> BH will be used outside big lock, so introduce lock to protect
> between the writers, ie, bh's adders and deleter. The lock only
> affects the writers and bh's callback does not take this extra lock.
> Note that for the same AioContext, aio_bh_poll() can not run in
> parallel yet.
> 
> Signed-off-by: Liu Ping Fan <pingf...@linux.vnet.ibm.com>
> 
> --------
> v3->v4
>   resolve memory order of bh->idle and ->scheduled
>   add comments for qemu_bh_delete/cancel
> 
> 
> ---
>  async.c             | 32 ++++++++++++++++++++++++++++++--
>  include/block/aio.h |  7 +++++++
>  2 files changed, 37 insertions(+), 2 deletions(-)
> 
> diff --git a/async.c b/async.c
> index 90fe906..108d7c3 100644
> --- a/async.c
> +++ b/async.c
> @@ -47,11 +47,16 @@ QEMUBH *aio_bh_new(AioContext *ctx, QEMUBHFunc *cb, void 
> *opaque)
>      bh->ctx = ctx;
>      bh->cb = cb;
>      bh->opaque = opaque;
> +    qemu_mutex_lock(&ctx->bh_lock);
>      bh->next = ctx->first_bh;
> +    /* Make sure the members ready before putting bh into list */
> +    smp_wmb();

s/members/member is/

Reply via email to