]> git.proxmox.com Git - mirror_qemu.git/commit
migration: synchronize dirty bitmap for resume
authorPeter Xu <peterx@redhat.com>
Wed, 2 May 2018 10:47:32 +0000 (18:47 +0800)
committerJuan Quintela <quintela@redhat.com>
Tue, 15 May 2018 18:56:57 +0000 (20:56 +0200)
commitedd090c72825b483df4de6a525d430d7635a5d8e
tree08940d5956ef466772c39a04ecc305ab134d005e
parentd1b8eadbc43739992eed75912f6a065b9f299221
migration: synchronize dirty bitmap for resume

This patch implements the first part of core RAM resume logic for
postcopy. ram_resume_prepare() is provided for the work.

When the migration is interrupted by network failure, the dirty bitmap
on the source side will be meaningless, because even the dirty bit is
cleared, it is still possible that the sent page was lost along the way
to destination. Here instead of continue the migration with the old
dirty bitmap on source, we ask the destination side to send back its
received bitmap, then invert it to be our initial dirty bitmap.

The source side send thread will issue the MIG_CMD_RECV_BITMAP requests,
once per ramblock, to ask for the received bitmap. On destination side,
MIG_RP_MSG_RECV_BITMAP will be issued, along with the requested bitmap.
Data will be received on the return-path thread of source, and the main
migration thread will be notified when all the ramblock bitmaps are
synchronized.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20180502104740.12123-17-peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
migration/migration.c
migration/migration.h
migration/ram.c
migration/trace-events