diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2017-06-05 14:39:04 +0200 |
---|---|---|
committer | Fam Zheng <famz@redhat.com> | 2017-06-16 07:55:00 +0800 |
commit | c0bad49946287ef218e871608b753b9991f6e54c (patch) | |
tree | 4fd4c9821a88147f939e5d1acc29a30b952ec568 /migration/block.c | |
parent | 2119882c7eb7e2c612b24fc0c8d86f5887d6f1c3 (diff) |
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 <stefanha@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20170605123908.18777-16-pbonzini@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Diffstat (limited to 'migration/block.c')
-rw-r--r-- | migration/block.c | 3 |
1 files changed, 2 insertions, 1 deletions
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; |