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 <p...@dlhnet.de> Signed-off-by: Kevin Wolf <kw...@redhat.com> --- block-migration.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/block-migration.c b/block-migration.c index 7def8ab..ed93301 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) { -- 1.7.6.5