summaryrefslogtreecommitdiff
path: root/block-migration.c
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2012-09-25 15:47:36 +0200
committerKevin Wolf <kwolf@redhat.com>2012-09-28 17:43:28 +0200
commit946d58be1533bf843b499df12e1d9f97b28245c8 (patch)
tree7765d932b1d3f008bf6e3202907183c66d5652ba /block-migration.c
parent6f8fd2530e9a530f237240daf1c981fa5df7f978 (diff)
downloadqemu-946d58be1533bf843b499df12e1d9f97b28245c8.tar.gz
qemu-946d58be1533bf843b499df12e1d9f97b28245c8.tar.bz2
qemu-946d58be1533bf843b499df12e1d9f97b28245c8.zip
block-migration: Flush requests in blk_mig_cleanup
When cancelling block migration, all in-flight requests of the block migration must be completed before the data can be freed. This was visible as failing assertions and segfaults. Reported-by: Peter Lieven <pl@dlhnet.de> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block-migration.c')
-rw-r--r--block-migration.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/block-migration.c b/block-migration.c
index 7def8ab197..ed933017f9 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -519,6 +519,8 @@ static void blk_mig_cleanup(void)
BlkMigDevState *bmds;
BlkMigBlock *blk;
+ bdrv_drain_all();
+
set_dirty_tracking(0);
while ((bmds = QSIMPLEQ_FIRST(&block_mig_state.bmds_list)) != NULL) {