From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YC1qQ-0004Ft-9k for qemu-devel@nongnu.org; Fri, 16 Jan 2015 03:01:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YC1qP-0003hP-Ev for qemu-devel@nongnu.org; Fri, 16 Jan 2015 03:01:26 -0500 From: Fam Zheng Date: Fri, 16 Jan 2015 16:01:17 +0800 Message-Id: <1421395277-3813-1-git-send-email-famz@redhat.com> Subject: [Qemu-devel] [PATCH] qtest: Fix deadloop by running main loop AIO context's timers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , qemu-stable@nongnu.org, Stefan Hajnoczi qemu_clock_run_timers() only takes care of main_loop_tlg, we shouldn't forget aio timer list groups. Currently, the qemu_clock_deadline_ns_all (a few lines above) counts all the timergroups of this clock type, including aio tlg, but we don't fire them, so they are never cleared, which makes a dead loop. For example, this function hangs when trying to drive throttled block request queue with qtest clock_step. Signed-off-by: Fam Zheng --- cpus.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cpus.c b/cpus.c index 3a5323b..dd7e595 100644 --- a/cpus.c +++ b/cpus.c @@ -387,6 +387,7 @@ void qtest_clock_warp(int64_t dest) seqlock_write_unlock(&timers_state.vm_clock_seqlock); qemu_clock_run_timers(QEMU_CLOCK_VIRTUAL); + timerlistgroup_run_timers(&qemu_get_aio_context()->tlg); clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); } qemu_clock_notify(QEMU_CLOCK_VIRTUAL); -- 1.9.3