Message ID | 1424883128-9841-39-git-send-email-dgilbert@redhat.com |
---|---|
State | New |
Headers | show |
On Wed, Feb 25, 2015 at 04:52:01PM +0000, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > Once we're in postcopy the source processors are stopped and memory > shouldn't change any more, so there's no need to look at the dirty > map. > > There are two notes to this: > 1) If we do resync and a page had changed then the page would get > sent again, which the destination wouldn't allow (since it might > have also modified the page) I'm not quite sure what you mean by "resync" in this context. > 2) Before disabling this I'd seen very rare cases where a page had been > marked dirtied although the memory contents are apparently identical > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
* David Gibson (david@gibson.dropbear.id.au) wrote: > On Wed, Feb 25, 2015 at 04:52:01PM +0000, Dr. David Alan Gilbert (git) wrote: > > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > > > Once we're in postcopy the source processors are stopped and memory > > shouldn't change any more, so there's no need to look at the dirty > > map. > > > > There are two notes to this: > > 1) If we do resync and a page had changed then the page would get > > sent again, which the destination wouldn't allow (since it might > > have also modified the page) > > I'm not quite sure what you mean by "resync" in this context. I mean synchronise the raw dirty bitmap with the migration bitmap, which we normally do at every cycle through migration. > > 2) Before disabling this I'd seen very rare cases where a page had been > > marked dirtied although the memory contents are apparently identical > > > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Thanks, Dave > > -- > David Gibson | I'll have my music baroque, and my code > david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ > | _way_ _around_! > http://www.ozlabs.org/~dgibson -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff --git a/arch_init.c b/arch_init.c index 7a1c9ea..9d8ca95 100644 --- a/arch_init.c +++ b/arch_init.c @@ -1398,7 +1398,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); @@ -1433,7 +1436,8 @@ static void 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();