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/