On 16/07/2015 11:56, Paolo Bonzini wrote: > @@ -286,13 +283,15 @@ bool aio_poll(AioContext *ctx, bool blocking) > npfd = 0; > ctx->walking_handlers--; > > + if (blocking) { > + atomic_sub(&ctx->notify_me, 2); > + } > +
I kept this place for subtracting notify_me because it is the same place where aio_set_dispatching was called. However, it can be anticipated to /* if we have any readable fds, dispatch event */ if (ret > 0) { for (i = 0; i < npfd; i++) { i.e. right after poll. As poll has exited, it can't be blocking the thread anymore. Stefan, please let me send v3 on Monday. Paolo > > /* Run dispatch even if there were no readable fds to run timers */ > - aio_set_dispatching(ctx, true); > if (aio_dispatch(ctx)) { > progress = true; > } >