I'm claiming this to be V2 of a series to support QEMU's mapped-ram stream format [1] and migration capability, even though the approach to control the feature is different than V1. To control mapped-ram in V1, I bumped the save format version and added a 'features' field to the save image header. In V2, I use the save_image_format setting in qemu.conf, extending it with a 'sparse' option to enable mapped-ram. IMO, the latter is nicer approach that fits better with existing save options. V2 leaves the "raw" save image format as default. save_image_format must be set to "sparse" to enable use of mapped-ram. Like V1, this version of the series also includes patches that leverage mapped-ram to add support for parallel save/restore. In one of the previous threads on this topic we discussed per-VM control of save image format by adding a 'format' parameter to virDomainSaveParams. I can do that as a followup series if folks agree its useful. Changes in V2 * Use save_image_format setting to control mapped-ram instead of introducing a new field to the header and bumping the save image version * Rename save parameter parallel-connections to parallel-channels * Address other minor comments from V1 [1] https://lists.libvirt.org/archives/list/devel@xxxxxxxxxxxxxxxxx/message/MNBHGQH7PKV4RXQZXLPAGMOTNEVR3JVS/ Claudio Fontana (3): include: Define constants for parallel save/restore tools: add parallel parameter to virsh save command tools: add parallel parameter to virsh restore command Jim Fehlig (17): lib: virDomain{Save,Restore}Params: Ensure absolute path qemu_fd: Add function to retrieve fdset ID qemu: Add function to check capability in migration params qemu: Add function to get bool value from migration params qemu: Add mapped-ram migration capability qemu: Add function to get migration params for save qemu_saveimage: add "sparse" to supported save image formats qemu: Add helper function for creating save image fd qemu: Move declaration of virQEMUSaveFormat to header file qemu: Add support for mapped-ram on save qemu: Decompose qemuSaveImageOpen qemu: Move creation of qemuProcessIncomingDef struct qemu: Apply migration parameters in qemuMigrationDstRun qemu: Add support for mapped-ram on restore qemu: Support O_DIRECT with mapped-ram on save qemu: Support O_DIRECT with mapped-ram on restore qemu: Add support for parallel save and restore docs/manpages/virsh.rst | 21 ++- include/libvirt/libvirt-domain.h | 11 ++ src/libvirt-domain.c | 95 +++++++++++--- src/qemu/qemu.conf.in | 9 +- src/qemu/qemu_driver.c | 108 +++++++++++----- src/qemu/qemu_fd.c | 18 +++ src/qemu/qemu_fd.h | 3 + src/qemu/qemu_migration.c | 194 +++++++++++++++++++--------- src/qemu/qemu_migration.h | 10 +- src/qemu/qemu_migration_params.c | 92 ++++++++++++++ src/qemu/qemu_migration_params.h | 17 +++ src/qemu/qemu_monitor.c | 40 ++++++ src/qemu/qemu_monitor.h | 5 + src/qemu/qemu_process.c | 117 ++++++++++++----- src/qemu/qemu_process.h | 19 ++- src/qemu/qemu_saveimage.c | 211 ++++++++++++++++++------------- src/qemu/qemu_saveimage.h | 39 +++++- src/qemu/qemu_snapshot.c | 29 +++-- tools/virsh-domain.c | 79 ++++++++++-- 19 files changed, 856 insertions(+), 261 deletions(-) -- 2.43.0