summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPaolo Bonzini2014-07-09 11:53:01 +0200
committerStefan Hajnoczi2014-08-29 11:46:58 +0200
commit845ca10dd089b4e48f0a79bad005fb30eb77584e (patch)
tree18d8041935c716ea293399136f769dafdbd8614d /include
parentblockdev: fix drive-mirror 'granularity' error message (diff)
downloadqemu-845ca10dd089b4e48f0a79bad005fb30eb77584e.tar.gz
qemu-845ca10dd089b4e48f0a79bad005fb30eb77584e.tar.xz
qemu-845ca10dd089b4e48f0a79bad005fb30eb77584e.zip
AioContext: take bottom halves into account when computing aio_poll timeout
Right now, QEMU invokes aio_bh_poll before the "poll" phase of aio_poll. It is simpler to do it afterwards and skip the "poll" phase altogether when the OS-dependent parts of AioContext are invoked from GSource. This way, AioContext behaves more similarly when used as a GSource vs. when used as stand-alone. As a start, take bottom halves into account when computing the poll timeout. If a bottom half is ready, do a non-blocking poll. As a side effect, this makes idle bottom halves work with aio_poll; an improvement, but not really an important one since they are deprecated. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/block/aio.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/block/aio.h b/include/block/aio.h
index c23de3cd1f..05b531ca25 100644
--- a/include/block/aio.h
+++ b/include/block/aio.h
@@ -303,4 +303,12 @@ static inline void aio_timer_init(AioContext *ctx,
timer_init(ts, ctx->tlg.tl[type], scale, cb, opaque);
}
+/**
+ * aio_compute_timeout:
+ * @ctx: the aio context
+ *
+ * Compute the timeout that a blocking aio_poll should use.
+ */
+int64_t aio_compute_timeout(AioContext *ctx);
+
#endif