Skip to content

Commit

Permalink
aio: make aio_poll(ctx, true) block with no fds
Browse files Browse the repository at this point in the history
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
busy waiting to completed throttled I/O requests but this is no longer
required so we can simplify aio_poll().

Note that aio_poll() still returns false when aio_notify() was used.  In
other words, stopping a blocking aio_poll() wait is not considered
making progress.

Adjust test-aio /aio/bh/callback-delete/one which assumed aio_poll(ctx,
true) would immediately return false instead of blocking.

Reviewed-by: Alex Bligh <alex@alex.org.uk>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
  • Loading branch information
stefanhaRH committed Dec 6, 2013
1 parent 0b06ef3 commit d3fa923
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 11 deletions.
5 changes: 0 additions & 5 deletions aio-posix.c
Expand Up @@ -217,11 +217,6 @@ bool aio_poll(AioContext *ctx, bool blocking)

ctx->walking_handlers--;

/* early return if we only have the aio_notify() fd */
if (ctx->pollfds->len == 1) {
return progress;
}

/* wait until next event */
ret = qemu_poll_ns((GPollFD *)ctx->pollfds->data,
ctx->pollfds->len,
Expand Down
5 changes: 0 additions & 5 deletions aio-win32.c
Expand Up @@ -161,11 +161,6 @@ bool aio_poll(AioContext *ctx, bool blocking)

ctx->walking_handlers--;

/* early return if we only have the aio_notify() fd */
if (count == 1) {
return progress;
}

/* wait until next event */
while (count > 0) {
int ret;
Expand Down
1 change: 0 additions & 1 deletion tests/test-aio.c
Expand Up @@ -195,7 +195,6 @@ static void test_bh_delete_from_cb(void)
g_assert(data1.bh == NULL);

g_assert(!aio_poll(ctx, false));
g_assert(!aio_poll(ctx, true));
}

static void test_bh_delete_from_cb_many(void)
Expand Down

0 comments on commit d3fa923

Please sign in to comment.