diff options
| author | Peter Maydell | 2015-06-12 19:04:14 +0200 |
|---|---|---|
| committer | Peter Maydell | 2015-06-12 19:04:14 +0200 |
| commit | 8aeaa055f5d3d4e87bf870892ba301eae57bdc1d (patch) | |
| tree | dae0e0c12a82bae3828894b240ff15b6101b1404 /iothread.c | |
| parent | Merge remote-tracking branch 'remotes/stefanha/tags/net-pull-request' into st... (diff) | |
| parent | qemu-iotests: expand test 093 to support group throttling (diff) | |
| download | qemu-8aeaa055f5d3d4e87bf870892ba301eae57bdc1d.tar.gz qemu-8aeaa055f5d3d4e87bf870892ba301eae57bdc1d.tar.xz qemu-8aeaa055f5d3d4e87bf870892ba301eae57bdc1d.zip | |
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging
# gpg: Signature made Fri Jun 12 15:57:47 2015 BST using RSA key ID 81AB73C8
# gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
# gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>"
* remotes/stefanha/tags/block-pull-request:
qemu-iotests: expand test 093 to support group throttling
throttle: Update throttle infrastructure copyright
throttle: add the name of the ThrottleGroup to BlockDeviceInfo
throttle: acquire the ThrottleGroup lock in bdrv_swap()
throttle: Add throttle group support
throttle: Add throttle group infrastructure tests
throttle: Add throttle group infrastructure
throttle: Extract timers from ThrottleState into a separate structure
raw-posix: Fix .bdrv_co_get_block_status() for unaligned image size
Revert "iothread: release iothread around aio_poll"
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'iothread.c')
| -rw-r--r-- | iothread.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/iothread.c b/iothread.c index 0416fc4268..878a594ef4 100644 --- a/iothread.c +++ b/iothread.c @@ -31,14 +31,21 @@ typedef ObjectClass IOThreadClass; static void *iothread_run(void *opaque) { IOThread *iothread = opaque; + bool blocking; qemu_mutex_lock(&iothread->init_done_lock); iothread->thread_id = qemu_get_thread_id(); qemu_cond_signal(&iothread->init_done_cond); qemu_mutex_unlock(&iothread->init_done_lock); - while (!atomic_read(&iothread->stopping)) { - aio_poll(iothread->ctx, true); + while (!iothread->stopping) { + aio_context_acquire(iothread->ctx); + blocking = true; + while (!iothread->stopping && aio_poll(iothread->ctx, blocking)) { + /* Progress was made, keep going */ + blocking = false; + } + aio_context_release(iothread->ctx); } return NULL; } |
