From da5e1de95bb235330d7724316e7a29239d1359d5 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Wed, 3 Jun 2015 10:15:33 +0100 Subject: Revert "iothread: release iothread around aio_poll" This reverts commit a0710f7995f914e3044e5899bd8ff6c43c62f916. In qemu-devel email message <556DBF87.2020908@de.ibm.com>, Christian Borntraeger writes: Having many guests all with a kernel/ramdisk (via -kernel) and several null block devices will result in hangs. All hanging guests are in partition detection code waiting for an I/O to return so very early maybe even the first I/O. Reverting that commit "fixes" the hangs. Reverting this commit for the 2.4 release. More time is needed to investigate and correct this patch. Reported-by: Christian Borntraeger Suggested-by: Paolo Bonzini Reviewed-by: Fam Zheng Signed-off-by: Stefan Hajnoczi --- async.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'async.c') diff --git a/async.c b/async.c index 46d9e639d7..77d080d6f5 100644 --- a/async.c +++ b/async.c @@ -280,6 +280,12 @@ static void aio_timerlist_notify(void *opaque) aio_notify(opaque); } +static void aio_rfifolock_cb(void *opaque) +{ + /* Kick owner thread in case they are blocked in aio_poll() */ + aio_notify(opaque); +} + AioContext *aio_context_new(Error **errp) { int ret; @@ -297,7 +303,7 @@ AioContext *aio_context_new(Error **errp) event_notifier_test_and_clear); ctx->thread_pool = NULL; qemu_mutex_init(&ctx->bh_lock); - rfifolock_init(&ctx->lock, NULL, NULL); + rfifolock_init(&ctx->lock, aio_rfifolock_cb, ctx); timerlistgroup_init(&ctx->tlg, aio_timerlist_notify, ctx); return ctx; -- cgit v1.2.3-55-g7522