Skip to contentSkip to conversation

virtio-9p: use accessor to get thread_pool

PATCH In review Greg Kurz 2 participants 2 messages Dec 20, 2015

lore
Share & tools
lore

Greg Kurz

author
#0 lore raw

PATCH 1/1 virtio-9p: use accessor to get thread_pool

The aio_context_new() function does not allocate a thread pool. This is deferred to the first call to the aio_get_thread_pool() accessor. It is hence forbidden to access the thread_pool field directly, as it may be NULL. The accessor *must* be used always.

Fixes ebac1202c95a4f1b76b6ef3f0f63926fa76e753e

---

Michael,

I did not have time to reproduce the issue, and therefore to effectively test this patch fixes it. Maybe you can do it ?

Thanks.

--
Greg

 hw/9pfs/virtio-9p-coth.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
hw/9pfs/virtio-9p-coth.c +1 -1
index fb6e8f80e0f4..ab9425c60fd2 100644
@@ -36,6 +36,6 @@ static int coroutine_enter_func(void *arg)
 void co_run_in_worker_bh(void *opaque)
 {
     Coroutine *co = opaque;
-    thread_pool_submit_aio(qemu_get_aio_context()->thread_pool,
+    thread_pool_submit_aio(aio_get_thread_pool(qemu_get_aio_context()),
                            coroutine_enter_func, co, coroutine_enter_cb, co);
 }
Reviewed-by Tested-by on v1 1/1
#1 lore raw
Quoted 7 lines · Greg Kurz

The aio_context_new() function does not allocate a thread pool. This is deferred to the first call to the aio_get_thread_pool() accessor. It is hence forbidden to access the thread_pool field directly, as it may be NULL. The accessor *must* be used always.

Fixes ebac1202c95a4f1b76b6ef3f0f63926fa76e753e
Quoted 4 lines

Michael,

I did not have time to reproduce the issue, and therefore to effectively test this patch fixes it. Maybe you can do it ?

Yes, it effectively fixes the issue.

Meanwhile I looked at the whole thing with how thread pools are allocated, and now can add my R-b too.

Thank you!

/mjt