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