qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 2/2] aio: Do aio_notify_accept only during bl


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH v2 2/2] aio: Do aio_notify_accept only during blocking aio_poll
Date: Tue, 7 Aug 2018 22:11:03 +0800
User-agent: Mutt/1.10.0 (2018-05-17)

On Tue, 08/07 12:15, Paolo Bonzini wrote:
> On 07/08/2018 11:16, Fam Zheng wrote:
> >     main thread                     IO Thread
> >     ===============================================================
> >     bdrv_drained_begin()
> >       aio_disable_external(ctx)
> >                                     aio_poll(ctx, true)
> >                                       ctx->notify_me += 2
> >                                       ppoll() /* blocked */
> >     ...
> >     bdrv_drained_end()
> >       ...
> >         aio_notify()

[2]            ^^^^^

> >     ...
> >     bdrv_set_aio_context()
> >       aio_poll(ctx, false)
> > [1]     aio_notify_accept(ctx)
> >                                       /* Hang! */
> 
> Should ppoll() rather be after [1]?  Otherwise the new commit message
> and patches look great.

Good point. They race and I think aio_notify_accept() is indeed done before
ppoll() starts its waiting. I will finish testing and send v3.

Fam

> 
> > aio_notify() only injects an event when ctx->notify_me is set,
> > correspondingly aio_notify_accept() is only useful when ctx->notify_me
> > _was_ set.
> 
> Very good point.
> 
> (Please Cc qemu-stable on the second patch too).
> 
> Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]