This is the multifd save prototype in its first semi-functional state, (save direction only), with surely a lot of rough edges as I am not very familiar with the libvirt code base yet or its rules. It seems to work for me, but take a look if this is something realistic to pursue further, whether this could be acceptable for libvirt. Claudio Fontana (11): libvirt: introduce virDomainSaveParametersFlags public API remote: Add RPC support for the virDomainSaveParametersFlags API qemu: add a stub for virDomainSaveParametersFlags API qemu: initial implementation for the virDomainSaveParametersFlags API iohelper: move runIO function to a separate module runio: add arguments to extend use beyond just stdin and stdout multifd-helper: new helper for parallel saves qemu: wire up saveimage code with the multifd helper qemu: implement qemuMigrationSrcToFilesMultiFd tools: add parallel parameter to virsh save command qemu: add migration parameter multifd-compression docs/manpages/virsh.rst | 23 ++- include/libvirt/libvirt-domain.h | 9 + src/driver-hypervisor.h | 7 + src/libvirt-domain.c | 51 ++++++ src/libvirt_private.syms | 1 + src/libvirt_public.syms | 5 + src/qemu/qemu_capabilities.c | 3 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_driver.c | 66 +++++++- src/qemu/qemu_migration.c | 135 ++++++++++----- src/qemu/qemu_migration.h | 7 + src/qemu/qemu_migration_params.c | 71 +++++--- src/qemu/qemu_migration_params.h | 15 ++ src/qemu/qemu_saveimage.c | 281 ++++++++++++++++++++++++++----- src/qemu/qemu_saveimage.h | 9 + src/qemu/qemu_snapshot.c | 2 +- src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 17 +- src/remote_protocol-structs | 9 + src/util/iohelper.c | 180 +------------------- src/util/meson.build | 15 ++ src/util/multifd-helper.c | 205 ++++++++++++++++++++++ src/util/runio.c | 214 +++++++++++++++++++++++ src/util/runio.h | 38 +++++ src/util/virthread.c | 5 + src/util/virthread.h | 1 + tools/virsh-domain.c | 49 +++++- 27 files changed, 1108 insertions(+), 312 deletions(-) create mode 100644 src/util/multifd-helper.c create mode 100644 src/util/runio.c create mode 100644 src/util/runio.h -- 2.34.1