summaryrefslogtreecommitdiff
path: root/cpus.c
diff options
context:
space:
mode:
authorWen Congyang <wency@cn.fujitsu.com>2015-11-20 17:34:38 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2015-11-26 16:47:44 +0100
commitb2780d325306dc80ec07db9c0c61e9b2ac10e559 (patch)
treee286436a71df1e7782ee69420900ea84bf328df1 /cpus.c
parent2b1641d0a2fc10bdbffb1c0aa9836186af008766 (diff)
call bdrv_drain_all() even if the vm is stopped
There are still I/O operations when the vm is stopped. For example, stop the vm, and do block migration. In this case, we don't drain all I/O operation, and may meet the following problem: qemu-system-x86_64: migration/block.c:731: block_save_complete: Assertion `block_mig_state.submitted == 0' failed. Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> Message-Id: <564EE92E.4070701@cn.fujitsu.com> Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'cpus.c')
-rw-r--r--cpus.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/cpus.c b/cpus.c
index 877bd70a27..43676fa1f3 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1415,6 +1415,8 @@ int vm_stop_force_state(RunState state)
return vm_stop(state);
} else {
runstate_set(state);
+
+ bdrv_drain_all();
/* Make sure to return an error if the flush in a previous vm_stop()
* failed. */
return bdrv_flush_all();