summary refs log tree commit diff stats
path: root/qemu-coroutine-io.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2014-07-09 11:53:05 +0200
committerStefan Hajnoczi <stefanha@redhat.com>2014-08-29 10:46:58 +0100
commite4c7e2d12d7b1c4501ab3397218a206d4953e633 (patch)
treee6953b841050e558d58554c2db9b066869322209 /qemu-coroutine-io.c
parent3672fa50837c1700deb1f86f0068c22c7e49aa22 (diff)
downloadfocaccia-qemu-e4c7e2d12d7b1c4501ab3397218a206d4953e633.tar.gz
focaccia-qemu-e4c7e2d12d7b1c4501ab3397218a206d4953e633.zip
AioContext: export and use aio_dispatch
So far, aio_poll's scheme was dispatch/poll/dispatch, where
the first dispatch phase was used only in the GSource case in
order to avoid a blocking poll.  Earlier patches changed it to
dispatch/prepare/poll/dispatch, where prepare is aio_compute_timeout.

By making aio_dispatch public, we can remove the first dispatch
phase altogether, so that both aio_poll and the GSource use the same
prepare/poll/dispatch scheme.

This patch breaks the invariant that aio_poll(..., true) will not block
the first time it returns false.  This used to be fundamental for
qemu_aio_flush's implementation as "while (qemu_aio_wait()) {}" but
no code in QEMU relies on this invariant anymore.  The return value
of aio_poll() is now comparable with that of g_main_context_iteration.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'qemu-coroutine-io.c')
0 files changed, 0 insertions, 0 deletions