[libvirt RFCv8 26/27] qemu: saveimage: restore compressed parallel images

Claudio Fontana cfontana at suse.de
Sat May 7 13:43:19 UTC 2022


Signed-off-by: Claudio Fontana <cfontana at suse.de>
---
 src/qemu/qemu_saveimage.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c
index df273eba66..eed52140ed 100644
--- a/src/qemu/qemu_saveimage.c
+++ b/src/qemu/qemu_saveimage.c
@@ -649,6 +649,23 @@ int qemuSaveImageLoadMultiFd(virConnectPtr conn, virDomainObj *vm, int oflags,
                                       QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS,
                                       nchannels) < 0)
             goto cleanup;
+        if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_MULTIFD_COMPRESSION)) {
+            const char *pcomp = qemuSaveMultiFdCompTypeToString(data->header.multifd_comp);
+            if (!pcomp) {
+                virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
+                               _("libvirt does not support parallel compression type %u"),
+                               data->header.multifd_comp);
+                goto cleanup;
+            }
+            if (qemuMigrationParamsSetString(migParams,
+                                             QEMU_MIGRATION_PARAM_MULTIFD_COMPRESSION,
+                                             pcomp) < 0)
+                goto cleanup;
+        } else if (data->header.multifd_comp != QEMU_SAVE_MULTIFD_COMP_NONE) {
+            virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                           _("QEMU does not seem to support multifd compression"));
+            goto cleanup;
+        }
         if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams) < 0)
             goto cleanup;
 
-- 
2.35.3



More information about the libvir-list mailing list