Patchwork [v2,10/13] block: disable I/O throttling outside main loop

login
register
mail settings
Submitter Stefan Hajnoczi
Date July 15, 2013, 2:42 p.m.
Message ID <1373899382-13514-11-git-send-email-stefanha@redhat.com>
Download mbox | patch
Permalink /patch/259066/
State New
Headers show

Comments

Stefan Hajnoczi - July 15, 2013, 2:42 p.m.
Timers only work in the main loop.  This means threads running their own
AioContext cannot use I/O throttling for now.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block.c | 5 +++++
 1 file changed, 5 insertions(+)

Patch

diff --git a/block.c b/block.c
index 26644ec..daf5717 100644
--- a/block.c
+++ b/block.c
@@ -169,6 +169,11 @@  static void bdrv_io_limits_intercept(BlockDriverState *bs,
 {
     int64_t wait_time = -1;
 
+    /* Timers currently only work in the main loop */
+    if (*tls_get_thread_aio_context() != qemu_get_aio_context()) {
+        return;
+    }
+
     if (!qemu_co_queue_empty(&bs->throttled_reqs)) {
         qemu_co_queue_wait(&bs->throttled_reqs);
     }