| Branch: | Revision:

root / aio-win32.c @ feature-archipelago

History | View | Annotate | Download (6 kB)

# Date Author Comment
d3fa9230 12/06/2013 05:53 pm Stefan Hajnoczi

aio: make aio_poll(ctx, true) block with no fds

This patch drops a special case where aio_poll(ctx, true) returns false
instead of blocking if no file descriptors are waiting on I/O. Now it
is possible to block in aio_poll() to wait for aio_notify().

This change eliminates busy waiting. bdrv_drain_all() used to rely on...

8b2d42d2 08/22/2013 11:04 pm Stefan Hajnoczi

aio-win32: replace incorrect AioHandler->opaque usage with ->e

The AioHandler->opaque field does not exist in aio-win32.c. The code
that uses it was incorrectly copied from aio-posix.c. For Windows we
can use AioHandler->e to match against AioContext->notifier....

438e1f47 08/22/2013 08:10 pm Alex Bligh

aio / timers: Convert aio_poll to use AioContext timers' deadline

Convert aio_poll to use deadline based on AioContext's timers.

aio_poll has been changed to return accurately whether progress
has occurred. Prior to this commit, aio_poll always returned...

f2e5dca4 08/19/2013 04:52 pm Stefan Hajnoczi

aio: drop io_flush argument

The .io_flush() handler no longer exists and has no users. Drop the
io_flush argument to aio_set_fd_handler() and related functions.

The AioFlushEventNotifierHandler and AioFlushHandler typedefs are no
longer used and are dropped too....

164a101f 08/19/2013 04:45 pm Stefan Hajnoczi

aio: stop using .io_flush()

Now that aio_poll() users check their termination condition themselves,
it is no longer necessary to call .io_flush() handlers.

The behavior of aio_poll() changes as follows:

1. .io_flush() is no longer invoked and file descriptors are always...

2ea9b58f 01/17/2013 11:51 am Kevin Wolf

aio: Fix return value of aio_poll()

aio_poll() must return true if any work is still pending, even if it
didn't make progress, so that bdrv_drain_all() doesn't stop waiting too
early. The possibility of stopping early occasionally lead to a failed
assertion in bdrv_drain_all(), when some in-flight request was missed...

1de7afc9 12/19/2012 09:32 am Paolo Bonzini

misc: move include files to include/qemu/

Signed-off-by: Paolo Bonzini <>

737e150e 12/19/2012 09:31 am Paolo Bonzini

block: move include files to include/block/

Signed-off-by: Paolo Bonzini <>

b022b4a4 11/26/2012 05:37 pm Paolo Bonzini

aio: avoid livelock behavior for Win32

The repeated calls to WaitForMultipleObjects may cause a livelock in aio_poll,
where no progress is made on bottom halves. This patch matches the behavior
of the POSIX code.

Signed-off-by: Paolo Bonzini <>...

f42b2207 10/30/2012 10:30 am Paolo Bonzini

aio: add Win32 implementation

The Win32 implementation will only accept EventNotifiers, thus a few
drivers are disabled under Windows. EventNotifiers are a good match
for the GSource implementation, too, because the Win32 port of glib
allows to place their HANDLEs in a GPollFD....

e3713e00 10/30/2012 10:30 am Paolo Bonzini

aio: make AioContexts GSources

This lets AioContexts be used (optionally) with a glib main loop.

Signed-off-by: Paolo Bonzini <>

7ed2b24c 10/30/2012 10:30 am Paolo Bonzini

aio: call aio_notify after setting I/O handlers

In the current code, this is done by qemu_set_fd_handler2, which is
called by qemu_aio_set_fd_handler. We need to keep the same behavior
even after removing the call to qemu_set_fd_handler2.

Reviewed-by: Anthony Liguori <>...