diff options
author | Paolo Bonzini | 2014-07-09 11:53:01 +0200 |
---|---|---|
committer | Stefan Hajnoczi | 2014-08-29 11:46:58 +0200 |
commit | 845ca10dd089b4e48f0a79bad005fb30eb77584e (patch) | |
tree | 18d8041935c716ea293399136f769dafdbd8614d /include | |
parent | blockdev: fix drive-mirror 'granularity' error message (diff) | |
download | qemu-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.h | 8 |
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 |