[libvirt RFC v3 00/19] multifd save restore prototype
Claudio Fontana
cfontana at suse.de
Tue Apr 26 17:05:40 UTC 2022
On 4/26/22 6:47 PM, Claudio Fontana wrote:
> This is the multifd save prototype in its first semi-functional state,
> now with both save and restore minimally functional.
>
> Still as mentioned before, likely there are quite a few rough edges,
>
> let me know what you think about this possible option.
>
> changes from v2 are many, mainly:
>
> * added ability to restore the VM from disk using multifd
>
> * fixed the multifd-helper to work in both directions,
> assuming the need to listen for save, and connect for restore.
>
> * fixed a large number of bugs, and probably introduced some :-)
>
>
> KNOWN ISSUES:
>
> 1) this applies only to virsh save and virsh restore for now
> (no managed save etc).
>
> 2) the .pl scripts to generate the headers for the new APIs
> do not reliably work for me, for the Restore case. I get:
>
> src/remote/remote_daemon_dispatch_stubs.h:10080:9:
> error: too few arguments to function ‘virDomainRestoreParametersFlags’
>
> if (virDomainRestoreParametersFlags(params, nparams, args->flags) < 0)
>
> To work around this I had to fixup the header manually to look like:
>
> ...(conn, params, nparams, args->flags) < 0)
>
>
3) after the restore the cpus are still paused, need to investigate.
Requires a "kick" via QMP "cont" command to get moving currently.
> Thanks for your thoughts,
>
> Claudio
>
> Claudio Fontana (19):
> iohelper: introduce new struct to carry copy operation parameters
> iohelper: refactor copy operation as a separate function
> libvirt: introduce virDomainSaveParametersFlags public API
> libvirt: introduce virDomainRestoreParametersFlags public API
> remote: Add RPC support for the virDomainSaveParametersFlags API
> remote: Add RPC support for the virDomainRestoreParametersFlags API
> qemu: add a stub for virDomainSaveParametersFlags API
> qemu: add a stub for virDomainRestoreParametersFlags API
> qemu: saveimage: introduce virQEMUSaveFd
> 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 save/restore
> qemu: wire up saveimage code with the multifd helper
> qemu: implement qemuMigrationSrcToFilesMultiFd
> qemu: add parameter to qemuMigrationDstRun to skip waiting
> qemu: implement qemuSaveImageLoadMultiFd
> tools: add parallel parameter to virsh save command
> tools: add parallel parameter to virsh restore command
> qemu: add migration parameter multifd-compression
>
> docs/manpages/virsh.rst | 34 ++-
> include/libvirt/libvirt-domain.h | 13 +
> src/driver-hypervisor.h | 14 +
> src/libvirt-domain.c | 99 +++++++
> src/libvirt_private.syms | 1 +
> src/libvirt_public.syms | 6 +
> src/qemu/qemu_capabilities.c | 5 +
> src/qemu/qemu_capabilities.h | 3 +
> src/qemu/qemu_driver.c | 233 +++++++++++----
> src/qemu/qemu_migration.c | 155 ++++++----
> src/qemu/qemu_migration.h | 16 +-
> src/qemu/qemu_migration_params.c | 71 +++--
> src/qemu/qemu_migration_params.h | 15 +
> src/qemu/qemu_process.c | 3 +-
> src/qemu/qemu_process.h | 5 +-
> src/qemu/qemu_saveimage.c | 480 ++++++++++++++++++++++++-------
> src/qemu/qemu_saveimage.h | 49 +++-
> src/qemu/qemu_snapshot.c | 6 +-
> src/remote/remote_driver.c | 2 +
> src/remote/remote_protocol.x | 29 +-
> src/remote_protocol-structs | 17 ++
> src/util/iohelper.c | 150 +---------
> src/util/meson.build | 15 +
> src/util/multifd-helper.c | 250 ++++++++++++++++
> src/util/runio.c | 214 ++++++++++++++
> src/util/runio.h | 38 +++
> src/util/virthread.c | 5 +
> src/util/virthread.h | 1 +
> tools/virsh-domain.c | 96 +++++--
> 29 files changed, 1599 insertions(+), 426 deletions(-)
> create mode 100644 src/util/multifd-helper.c
> create mode 100644 src/util/runio.c
> create mode 100644 src/util/runio.h
>
More information about the libvir-list
mailing list