@@ -984,6 +984,7 @@ int64_t ram_mask_postcopy_bitmap(MigrationState *ms)
{
int64_t ram_pages = last_ram_offset() >> TARGET_PAGE_BITS;
+ /* This should be our last sync, the src is now paused */
migration_bitmap_sync();
bitmap_and(ms->sentmap, ms->sentmap, migration_bitmap, ram_pages);
return ram_pages;
@@ -1251,7 +1252,10 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
static int ram_save_complete(QEMUFile *f, void *opaque)
{
qemu_mutex_lock_ramlist();
- migration_bitmap_sync();
+
+ if (!migration_postcopy_phase(migrate_get_current())) {
+ migration_bitmap_sync();
+ }
ram_control_before_iterate(f, RAM_CONTROL_FINISH);
@@ -1284,7 +1288,8 @@ static uint64_t ram_save_pending(QEMUFile *f, void *opaque, uint64_t max_size)
remaining_size = ram_save_remaining() * TARGET_PAGE_SIZE;
- if (remaining_size < max_size) {
+ if (!migration_postcopy_phase(migrate_get_current()) &&
+ remaining_size < max_size) {
qemu_mutex_lock_iothread();
migration_bitmap_sync();
qemu_mutex_unlock_iothread();