From: Peter Krempa Date: Mon, 25 Aug 2025 13:05:41 +0000 (+0200) Subject: qemu: Always assume support for QEMU_CAPS_MIGRATE_RDMA X-Git-Tag: v11.8.0-rc1~123 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c9fada7d0b10ef00c8c2dc6e1e876bc9011624b8;p=thirdparty%2Flibvirt.git qemu: Always assume support for QEMU_CAPS_MIGRATE_RDMA 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 Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b22248e3b9..a8f4dd489c 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -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")); diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index beb888160a..36865040df 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -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, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index a81c02c9d5..059834648d 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -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);