"Dr. David Alan Gilbert (git)" <dgilb...@redhat.com> wrote:
> From: "Dr. David Alan Gilbert" <dgilb...@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)
>   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 <dgilb...@redhat.com>
> Reviewed-by: David Gibson <da...@gibson.dropbear.id.au>

Reviewed-by: Juan Quintela <quint...@redhat.com>

But, in what patch do we sync the migratioon bitmap after changing to postcopy?

> ---
>  migration/ram.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/migration/ram.c b/migration/ram.c
> index 01a0ab4..5cff4d6 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -1643,7 +1643,9 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
>  {
>      rcu_read_lock();
>  
> -    migration_bitmap_sync();
> +    if (!migration_postcopy_phase(migrate_get_current())) {
> +        migration_bitmap_sync();
> +    }
>  
>      ram_control_before_iterate(f, RAM_CONTROL_FINISH);
>  
> @@ -1678,7 +1680,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();
>          rcu_read_lock();
>          migration_bitmap_sync();

Reply via email to