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;
> }
>