On 06/15/2015 09:44 PM, Andrew Cooper wrote: > This series adds support for the libxl migration v2 stream, and untangles the > existing layering violations of the toolstack and qemu records. > > At the end of the series, legacy migration is no longer used. > > Note: Remus support is broken and (RFC) fixed in separate patches in this > series. It was too tangled to fix in a bisectable fashon. Plain > suspend/migrate/resume however is (should be) bisectable along the entire > series. > > There are a couple of outstanding questions: > > 1) What to do about the toolstack/xenstore record. It is currently by being > passed around as a blob, but it might be better to split it out. > > 2) What (if any) ABI/API qualifications are needed? (Particularly in reference > to patch 21) > > The Remus code is untested by me, but is hopefully in the correct ballpark. > All other combinations of suspend/migrate/resume have been tested with PV and > HVM guests (qemu-trad and qemu-upstream), including 32 -> 64 bit migration > (which was the underlying bug causing us to write migration v2 in the first > place). > > There are some further improvements which could be made. In particular, it > appears that sending the toolstack record on each checkpoint is redundant, and > there is certainly room for some more pruning of the legacy migration code.
Do you mean: libxl__toolstack_save is harmless, and it can be called when the guest is running? Thanks Wen Congyang > > Anyway, thoughts/comments welcome. Please test! > > ~Andrew > > > Andrew Cooper (22): > tools/libxl: Fix libxl__ev_child_inuse() check for not-yet-initialised > children > tools/libxc: Always compile the compat qemu variables into xc_sr_context > tools/libxl: Stash all restore parameters in domain_create_state > tools/xl: Mandatory flag indicating the format of the migration stream > tools/libxl: Introduce ROUNDUP() > tools/libxl: Extra APIs for the save helper > tools/libxl: Pass restore_fd as a parameter to libxl__xc_domain_restore() > docs: Libxl migration v2 stream specification > tools/python: Libxc migration v2 infrastructure > tools/python: Libxl migration v2 infrastructure > tools/python: Verification utility for v2 stream spec compliance > tools/python: Conversion utility for legacy migration streams > tools/libxl: Support converting a legacy stream to a v2 stream > tools/libxl: Convert a legacy stream if needed > tools/libxc+libxl+xl: Restore v2 streams > tools/libxc+libxl+xl: Save v2 streams > docs/libxl: [RFC] Introduce CHECKPOINT_END to support migration v2 remus > streams > tools/libxl: [RFC] Write checkpoint records into the stream > tools/libx{c,l}: [RFC] Introduce restore_callbacks.checkpoint() > tools/libxl: [RFC] Handle checkpoint records in a libxl migration v2 stream > tools/libxc: Drop all XG_LIBXL_HVM_COMPAT code from libxc > tools/libxl: Drop all knowledge of toolstack callbacks > > Ian Jackson (2): > libxl: cancellation: Preparations for save/restore cancellation > libxl: cancellation: Handle SIGTERM in save/restore helper > > Ross Lagerwall (3): > tools/libxl: Migration v2 stream format > tools/libxl: Infrastructure for reading a libxl migration v2 stream > tools/libxl: Infrastructure for writing a v2 stream > > docs/specs/libxl-migration-stream.pandoc | 218 ++++++++ > tools/libxc/Makefile | 2 - > tools/libxc/include/xenguest.h | 3 + > tools/libxc/xc_sr_common.h | 5 - > tools/libxc/xc_sr_restore.c | 33 +- > tools/libxc/xc_sr_restore_x86_hvm.c | 124 ----- > tools/libxc/xc_sr_save_x86_hvm.c | 36 -- > tools/libxl/Makefile | 2 + > tools/libxl/libxl_aoutils.c | 7 + > tools/libxl/libxl_convert_callout.c | 146 ++++++ > tools/libxl/libxl_create.c | 80 +-- > tools/libxl/libxl_dom.c | 61 +-- > tools/libxl/libxl_internal.h | 140 ++++- > tools/libxl/libxl_save_callout.c | 63 +-- > tools/libxl/libxl_save_helper.c | 95 ++-- > tools/libxl/libxl_save_msgs_gen.pl | 9 +- > tools/libxl/libxl_sr_stream_format.h | 58 +++ > tools/libxl/libxl_stream_read.c | 663 ++++++++++++++++++++++++ > tools/libxl/libxl_stream_write.c | 640 +++++++++++++++++++++++ > tools/libxl/libxl_types.idl | 2 + > tools/libxl/xl_cmdimpl.c | 9 +- > tools/python/Makefile | 4 + > tools/python/scripts/convert-legacy-stream.py | 683 > +++++++++++++++++++++++++ > tools/python/scripts/verify-stream-v2.py | 174 +++++++ > tools/python/setup.py | 1 + > tools/python/xen/migration/libxc.py | 446 ++++++++++++++++ > tools/python/xen/migration/libxl.py | 199 +++++++ > tools/python/xen/migration/tests.py | 54 ++ > tools/python/xen/migration/verify.py | 37 ++ > 29 files changed, 3638 insertions(+), 356 deletions(-) > create mode 100644 docs/specs/libxl-migration-stream.pandoc > create mode 100644 tools/libxl/libxl_convert_callout.c > create mode 100644 tools/libxl/libxl_sr_stream_format.h > create mode 100644 tools/libxl/libxl_stream_read.c > create mode 100644 tools/libxl/libxl_stream_write.c > create mode 100755 tools/python/scripts/convert-legacy-stream.py > create mode 100755 tools/python/scripts/verify-stream-v2.py > create mode 100644 tools/python/xen/migration/__init__.py > create mode 100644 tools/python/xen/migration/libxc.py > create mode 100644 tools/python/xen/migration/libxl.py > create mode 100644 tools/python/xen/migration/tests.py > create mode 100644 tools/python/xen/migration/verify.py > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel