From c0bad49946287ef218e871608b753b9991f6e54c Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 5 Jun 2017 14:39:04 +0200 Subject: migration/block: reset dirty bitmap before reading Any data that is returned by read may be stale already, the bitmap has to be cleared before issuing the read. Reviewed-by: Stefan Hajnoczi Signed-off-by: Paolo Bonzini Message-Id: <20170605123908.18777-16-pbonzini@redhat.com> Signed-off-by: Fam Zheng --- migration/block.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'migration/block.c') diff --git a/migration/block.c b/migration/block.c index 9e2092681e..423877bb40 100644 --- a/migration/block.c +++ b/migration/block.c @@ -532,6 +532,8 @@ static int mig_save_device_dirty(QEMUFile *f, BlkMigDevState *bmds, } else { nr_sectors = BDRV_SECTORS_PER_DIRTY_CHUNK; } + bdrv_reset_dirty_bitmap(bmds->dirty_bitmap, sector, nr_sectors); + blk = g_new(BlkMigBlock, 1); blk->buf = g_malloc(BLOCK_SIZE); blk->bmds = bmds; @@ -564,7 +566,6 @@ static int mig_save_device_dirty(QEMUFile *f, BlkMigDevState *bmds, g_free(blk); } - bdrv_reset_dirty_bitmap(bmds->dirty_bitmap, sector, nr_sectors); sector += nr_sectors; bmds->cur_dirty = sector; -- cgit v1.2.1