aboutsummaryrefslogtreecommitdiff
path: root/softmmu/runstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'softmmu/runstate.c')
-rw-r--r--softmmu/runstate.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/softmmu/runstate.c b/softmmu/runstate.c
index a9fbcf4..f3bd862 100644
--- a/softmmu/runstate.c
+++ b/softmmu/runstate.c
@@ -802,21 +802,21 @@ void qemu_cleanup(void)
*/
blk_exp_close_all();
+
+ /* No more vcpu or device emulation activity beyond this point */
+ vm_shutdown();
+ replay_finish();
+
/*
* We must cancel all block jobs while the block layer is drained,
* or cancelling will be affected by throttling and thus may block
* for an extended period of time.
- * vm_shutdown() will bdrv_drain_all(), so we may as well include
- * it in the drained section.
+ * Begin the drained section after vm_shutdown() to avoid requests being
+ * stuck in the BlockBackend's request queue.
* We do not need to end this section, because we do not want any
* requests happening from here on anyway.
*/
bdrv_drain_all_begin();
-
- /* No more vcpu or device emulation activity beyond this point */
- vm_shutdown();
- replay_finish();
-
job_cancel_sync_all();
bdrv_close_all();