]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Always assume support for QEMU_CAPS_MIGRATE_RDMA
authorPeter Krempa <pkrempa@redhat.com>
Mon, 25 Aug 2025 13:05:41 +0000 (15:05 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 2 Sep 2025 08:54:46 +0000 (10:54 +0200)
Libvirt detects QEMU_CAPS_MIGRATE_RDMA by probing
'query-migrate-capabilities' for the presence of 'rdma-pin-all'.

In qemu the entry in 'query-migrate-capabilities' existed since the
introduction of the command in qemu-2.0. We thus always detect this
capability.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_migration.c
src/qemu/qemu_migration.h
src/qemu/qemu_process.c

index b22248e3b92fb35020c70cdfa5f3b145a0fca10e..a8f4dd489c407db5e7a452d1fa0c0ba22c30ba24 100644 (file)
@@ -2387,20 +2387,14 @@ qemuMigrationDstOPDRelocate(virQEMUDriver *driver G_GNUC_UNUSED,
 
 
 int
-qemuMigrationDstCheckProtocol(virQEMUCaps *qemuCaps,
-                              const char *migrateFrom)
+qemuMigrationDstCheckProtocol(const char *migrateFrom)
 {
-    if (STRPREFIX(migrateFrom, "rdma")) {
-        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
-            virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
-                           _("incoming RDMA migration is not supported with this QEMU binary"));
-            return -1;
-        }
-    } else if (!STRPREFIX(migrateFrom, "tcp") &&
-               !STRPREFIX(migrateFrom, "exec") &&
-               !STRPREFIX(migrateFrom, "fd") &&
-               !STRPREFIX(migrateFrom, "unix") &&
-               STRNEQ(migrateFrom, "stdio")) {
+    if (!STRPREFIX(migrateFrom, "tcp") &&
+        !STRPREFIX(migrateFrom, "exec") &&
+        !STRPREFIX(migrateFrom, "fd") &&
+        !STRPREFIX(migrateFrom, "unix") &&
+        !STRPREFIX(migrateFrom, "rdma") &&
+        STRNEQ(migrateFrom, "stdio")) {
         virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
                        _("unknown migration protocol"));
         return -1;
@@ -5330,7 +5324,6 @@ qemuMigrationSrcPerformNative(virQEMUDriver *driver,
                               qemuMigrationParams *migParams,
                               const char *nbdURI)
 {
-    qemuDomainObjPrivate *priv = vm->privateData;
     g_autoptr(virURI) uribits = NULL;
     int ret = -1;
     qemuMigrationSpec spec;
@@ -5353,11 +5346,6 @@ qemuMigrationSrcPerformNative(virQEMUDriver *driver,
     }
 
     if (STREQ(uribits->scheme, "rdma")) {
-        if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
-            virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
-                           _("outgoing RDMA migration is not supported with this QEMU binary"));
-            return -1;
-        }
         if (!virMemoryLimitIsSet(vm->def->mem.hard_limit)) {
             virReportError(VIR_ERR_OPERATION_INVALID, "%s",
                            _("cannot start RDMA migration with no memory hard limit set"));
index beb888160aaf0a56630fb510ff5eb42bbc92a51c..36865040dffc5f6e09921bac4cb5dd381ca04fea 100644 (file)
@@ -274,8 +274,7 @@ qemuMigrationDstErrorReport(virQEMUDriver *driver,
                             const char *name);
 
 int
-qemuMigrationDstCheckProtocol(virQEMUCaps *qemuCaps,
-                              const char *migrateFrom);
+qemuMigrationDstCheckProtocol(const char *migrateFrom);
 
 char *
 qemuMigrationDstGetURI(const char *migrateFrom,
index a81c02c9d514b1c9068291e45b93f25b2d4ef069..059834648d62b0f23397b541a051170f46bbf7ea 100644 (file)
@@ -4997,7 +4997,7 @@ qemuProcessIncomingDefNew(virQEMUDriver *driver,
     qemuDomainObjPrivate *priv = vm->privateData;
     qemuProcessIncomingDef *inc = NULL;
 
-    if (qemuMigrationDstCheckProtocol(priv->qemuCaps, migrateFrom) < 0)
+    if (qemuMigrationDstCheckProtocol(migrateFrom) < 0)
         return NULL;
 
     inc = g_new0(qemuProcessIncomingDef, 1);