qemu-patch-raspberry4/migration
zhanghailiang 4f97558e10 COLO: Introduce checkpointing protocol
We need communications protocol of user-defined to control
the checkpointing process.

The new checkpointing request is started by Primary VM,
and the interactive process like below:

Checkpoint synchronizing points:

                   Primary               Secondary
                                            initial work
'checkpoint-ready'    <-------------------- @

'checkpoint-request'  @ -------------------->
                                            Suspend (Only in hybrid mode)
'checkpoint-reply'    <-------------------- @
                      Suspend&Save state
'vmstate-send'        @ -------------------->
                      Send state            Receive state
'vmstate-received'    <-------------------- @
                      Release packets       Load state
'vmstate-load'        <-------------------- @
                      Resume                Resume (Only in hybrid mode)

                      Start Comparing (Only in hybrid mode)
NOTE:
 1) '@' who sends the message
 2) Every sync-point is synchronized by two sides with only
    one handshake(single direction) for low-latency.
    If more strict synchronization is required, a opposite direction
    sync-point should be added.
 3) Since sync-points are single direction, the remote side may
    go forward a lot when this side just receives the sync-point.
 4) For now, we only support 'periodic' checkpoint, for which
   the Secondary VM is not running, later we will support 'hybrid' mode.

Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Amit Shah <amit@amitshah.net>
2016-10-30 15:17:39 +05:30
..
block.c migration/block: Convert saving to BlockBackend 2016-06-08 10:21:08 +02:00
colo-comm.c migration: Switch to COLO process after finishing loadvm 2016-10-30 15:17:39 +05:30
colo.c COLO: Introduce checkpointing protocol 2016-10-30 15:17:39 +05:30
exec.c migration: set name for all I/O channels created 2016-10-27 09:13:10 +02:00
fd.c migration: set name for all I/O channels created 2016-10-27 09:13:10 +02:00
Makefile.objs COLO: migrate COLO related info to secondary node 2016-10-30 15:17:39 +05:30
migration.c migration: Switch to COLO process after finishing loadvm 2016-10-30 15:17:39 +05:30
postcopy-ram.c migration/postcopy: Explicitly disallow huge pages 2016-10-13 17:23:53 +02:00
qemu-file-channel.c migration: introduce a new QEMUFile impl based on QIOChannel 2016-05-26 11:31:24 +05:30
qemu-file.c migration: fix live migration failure with compression 2016-08-11 16:59:53 +05:30
qjson.c qjson: free str 2016-08-08 00:00:24 +04:00
ram.c migration: Remove static allocation of xzblre cache buffer 2016-10-24 16:26:49 +01:00
rdma.c migration/rdma: Don't flag an error when we've been told about one 2016-10-13 17:22:38 +02:00
savevm.c Merge qio 2016/10/27 v1 2016-10-28 15:30:55 +01:00
socket.c migration: set name for all I/O channels created 2016-10-27 09:13:10 +02:00
tls.c migration: set name for all I/O channels created 2016-10-27 09:13:10 +02:00
trace-events COLO: Introduce checkpointing protocol 2016-10-30 15:17:39 +05:30
vmstate.c migration: Report values for comparisons 2016-10-13 17:22:38 +02:00
xbzrle.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00