From: Paolo Bonzini <pbonz...@redhat.com> 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 <stefa...@redhat.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Message-Id: <20170605123908.18777-16-pbonz...@redhat.com> Signed-off-by: Fam Zheng <f...@redhat.com> --- migration/block.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/migration/block.c b/migration/block.c index 0b3926e..7ed42c6 100644 --- a/migration/block.c +++ b/migration/block.c @@ -537,6 +537,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; @@ -569,7 +571,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; -- 2.9.4