From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780152150187.61346300150012; Fri, 16 Feb 2018 03:22:32 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 20BF781DEB; Fri, 16 Feb 2018 11:22:30 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 83C145D6A3; Fri, 16 Feb 2018 11:22:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 25CBB4A46D; Fri, 16 Feb 2018 11:22:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMQco012887 for ; Fri, 16 Feb 2018 06:22:26 -0500 Received: by smtp.corp.redhat.com (Postfix) id 13664202699C; Fri, 16 Feb 2018 11:22:26 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id E64762026DFD; Fri, 16 Feb 2018 11:22:24 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:13 +0000 Message-Id: <20180216112222.26572-2-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 01/10] driver: allow override of connection for secondary drivers X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 16 Feb 2018 11:22:30 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 When the test suite is running, we don't want to be triggering the startup of daemons for the secondary drivers. Thus we must provide a way to set a custom connection for the secondary drivers, to override the default logic which opens a new connection. This will also be useful for code where we have a whole set of separate functions calls all needing the secret driver. Currently the connection to the secret driver is opened & closed many times in quick succession. This will allow us to pre-open a connection temporarily, improving the performance of startup. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/driver.c | 184 +++++++++++++++++++++++++++++++++++++++++++= ++-- src/driver.h | 7 ++ src/libvirt_private.syms | 6 ++ 3 files changed, 191 insertions(+), 6 deletions(-) diff --git a/src/driver.c b/src/driver.c index a6a7ff925a..52e1ae345a 100644 --- a/src/driver.c +++ b/src/driver.c @@ -28,6 +28,7 @@ #include "viralloc.h" #include "virfile.h" #include "virlog.h" +#include "virthread.h" #include "configmake.h" =20 VIR_LOG_INIT("driver"); @@ -168,32 +169,203 @@ virDriverLoadModule(const char *name, =20 /* XXX unload modules, but we can't until we can unregister libvirt driver= s */ =20 +virThreadLocal connectInterface; +virThreadLocal connectNetwork; +virThreadLocal connectNWFilter; +virThreadLocal connectNodeDev; +virThreadLocal connectSecret; +virThreadLocal connectStorage; + +static int +virConnectCacheOnceInit(void) +{ + if (virThreadLocalInit(&connectInterface, NULL) < 0) + return -1; + if (virThreadLocalInit(&connectNetwork, NULL) < 0) + return -1; + if (virThreadLocalInit(&connectNWFilter, NULL) < 0) + return -1; + if (virThreadLocalInit(&connectNodeDev, NULL) < 0) + return -1; + if (virThreadLocalInit(&connectSecret, NULL) < 0) + return -1; + if (virThreadLocalInit(&connectStorage, NULL) < 0) + return -1; + return 0; +} + +VIR_ONCE_GLOBAL_INIT(virConnectCache); + virConnectPtr virGetConnectInterface(void) { - return virConnectOpen(geteuid() =3D=3D 0 ? "interface:///system" : "in= terface:///session"); + virConnectPtr conn; + + if (virConnectCacheInitialize() < 0) + return NULL; + + conn =3D virThreadLocalGet(&connectInterface); + if (conn) { + VIR_DEBUG("Return cached interface connection %p", conn); + virObjectRef(conn); + } else { + conn =3D virConnectOpen(geteuid() =3D=3D 0 ? "interface:///system"= : "interface:///session"); + VIR_DEBUG("Opened new interface connection %p", conn); + } + return conn; } =20 virConnectPtr virGetConnectNetwork(void) { - return virConnectOpen(geteuid() =3D=3D 0 ? "network:///system" : "netw= ork:///session"); + virConnectPtr conn; + + if (virConnectCacheInitialize() < 0) + return NULL; + + conn =3D virThreadLocalGet(&connectNetwork); + if (conn) { + VIR_DEBUG("Return cached network connection %p", conn); + virObjectRef(conn); + } else { + conn =3D virConnectOpen(geteuid() =3D=3D 0 ? "network:///system" := "network:///session"); + VIR_DEBUG("Opened new network connection %p", conn); + } + return conn; } =20 virConnectPtr virGetConnectNWFilter(void) { - return virConnectOpen(geteuid() =3D=3D 0 ? "nwfilter:///system" : "nwf= ilter:///session"); + virConnectPtr conn; + + if (virConnectCacheInitialize() < 0) + return NULL; + + conn =3D virThreadLocalGet(&connectNWFilter); + if (conn) { + VIR_DEBUG("Return cached nwfilter connection %p", conn); + virObjectRef(conn); + } else { + conn =3D virConnectOpen(geteuid() =3D=3D 0 ? "nwfilter:///system" = : "nwfilter:///session"); + VIR_DEBUG("Opened new nwfilter connection %p", conn); + } + return conn; } =20 virConnectPtr virGetConnectNodeDev(void) { - return virConnectOpen(geteuid() =3D=3D 0 ? "nodedev:///system" : "node= dev:///session"); + virConnectPtr conn; + + if (virConnectCacheInitialize() < 0) + return NULL; + + conn =3D virThreadLocalGet(&connectNodeDev); + if (conn) { + VIR_DEBUG("Return cached nodedev connection %p", conn); + virObjectRef(conn); + } else { + conn =3D virConnectOpen(geteuid() =3D=3D 0 ? "nodedev:///system" := "nodedev:///session"); + VIR_DEBUG("Opened new nodedev connection %p", conn); + } + return conn; } =20 virConnectPtr virGetConnectSecret(void) { - return virConnectOpen(geteuid() =3D=3D 0 ? "secret:///system" : "secre= t:///session"); + virConnectPtr conn; + + if (virConnectCacheInitialize() < 0) + return NULL; + + conn =3D virThreadLocalGet(&connectSecret); + if (conn) { + VIR_DEBUG("Return cached secret connection %p", conn); + virObjectRef(conn); + } else { + conn =3D virConnectOpen(geteuid() =3D=3D 0 ? "secret:///system" : = "secret:///session"); + VIR_DEBUG("Opened new secret connection %p", conn); + } + return conn; } =20 virConnectPtr virGetConnectStorage(void) { - return virConnectOpen(geteuid() =3D=3D 0 ? "storage:///system" : "stor= age:///session"); + virConnectPtr conn; + + if (virConnectCacheInitialize() < 0) + return NULL; + + conn =3D virThreadLocalGet(&connectStorage); + if (conn) { + VIR_DEBUG("Return cached storage connection %p", conn); + virObjectRef(conn); + } else { + conn =3D virConnectOpen(geteuid() =3D=3D 0 ? "storage:///system" := "storage:///session"); + VIR_DEBUG("Opened new storage connection %p", conn); + } + return conn; +} + + +int +virSetConnectInterface(virConnectPtr conn) +{ + if (virConnectCacheInitialize() < 0) + return -1; + + VIR_DEBUG("Override interface connection with %p", conn); + return virThreadLocalSet(&connectInterface, conn); +} + + +int +virSetConnectNetwork(virConnectPtr conn) +{ + if (virConnectCacheInitialize() < 0) + return -1; + + VIR_DEBUG("Override network connection with %p", conn); + return virThreadLocalSet(&connectNetwork, conn); +} + + +int +virSetConnectNWFilter(virConnectPtr conn) +{ + if (virConnectCacheInitialize() < 0) + return -1; + + VIR_DEBUG("Override nwfilter connection with %p", conn); + return virThreadLocalSet(&connectNWFilter, conn); +} + + +int +virSetConnectNodeDev(virConnectPtr conn) +{ + if (virConnectCacheInitialize() < 0) + return -1; + + VIR_DEBUG("Override nodedev connection with %p", conn); + return virThreadLocalSet(&connectNodeDev, conn); +} + + +int +virSetConnectSecret(virConnectPtr conn) +{ + if (virConnectCacheInitialize() < 0) + return -1; + + VIR_DEBUG("Override secret connection with %p", conn); + return virThreadLocalSet(&connectSecret, conn); +} + + +int +virSetConnectStorage(virConnectPtr conn) +{ + if (virConnectCacheInitialize() < 0) + return -1; + + VIR_DEBUG("Override storage connection with %p", conn); + return virThreadLocalSet(&connectStorage, conn); } diff --git a/src/driver.h b/src/driver.h index fe0cec0923..c86da85481 100644 --- a/src/driver.h +++ b/src/driver.h @@ -112,4 +112,11 @@ virConnectPtr virGetConnectNodeDev(void); virConnectPtr virGetConnectSecret(void); virConnectPtr virGetConnectStorage(void); =20 +int virSetConnectInterface(virConnectPtr conn); +int virSetConnectNetwork(virConnectPtr conn); +int virSetConnectNWFilter(virConnectPtr conn); +int virSetConnectNodeDev(virConnectPtr conn); +int virSetConnectSecret(virConnectPtr conn); +int virSetConnectStorage(virConnectPtr conn); + #endif /* __VIR_DRIVER_H__ */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 3b14d7d158..7b05e4418f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1202,6 +1202,12 @@ virGetConnectNodeDev; virGetConnectNWFilter; virGetConnectSecret; virGetConnectStorage; +virSetConnectInterface; +virSetConnectNetwork; +virSetConnectNodeDev; +virSetConnectNWFilter; +virSetConnectSecret; +virSetConnectStorage; =20 =20 # libvirt_internal.h --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780170302268.22891329628044; Fri, 16 Feb 2018 03:22:50 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CAF5219CBD7; Fri, 16 Feb 2018 11:22:48 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A57D25EE0D; Fri, 16 Feb 2018 11:22:48 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6DF5A18033EC; Fri, 16 Feb 2018 11:22:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMRRh012903 for ; Fri, 16 Feb 2018 06:22:27 -0500 Received: by smtp.corp.redhat.com (Postfix) id 544832024CA7; Fri, 16 Feb 2018 11:22:27 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 69C9E2024CA1; Fri, 16 Feb 2018 11:22:26 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:14 +0000 Message-Id: <20180216112222.26572-3-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 02/10] conf: reimplement virDomainNetResolveActualType in terms of public API X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 16 Feb 2018 11:22:49 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Now that we have the ability to easily open connections to secondary drivers, eg network:///system, it is possible to reimplement the virDomainNetResolveActualType method in terms of the public API. This avoids the need to have the network driver provide a callback for it. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/conf/domain_conf.c | 80 ++++++++++++++++++++++++++++++++++++++++-= ---- src/conf/domain_conf.h | 11 +------ src/network/bridge_driver.c | 76 +----------------------------------------- tests/Makefile.am | 7 +--- 4 files changed, 75 insertions(+), 99 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fb732a0c2a..4f50547580 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -28823,7 +28823,6 @@ static virDomainNetNotifyActualDeviceImpl netNotify; static virDomainNetReleaseActualDeviceImpl netRelease; static virDomainNetBandwidthChangeAllowedImpl netBandwidthChangeAllowed; static virDomainNetBandwidthUpdateImpl netBandwidthUpdate; -static virDomainNetResolveActualTypeImpl netResolveActualType; =20 =20 void @@ -28831,15 +28830,13 @@ virDomainNetSetDeviceImpl(virDomainNetAllocateAct= ualDeviceImpl allocate, virDomainNetNotifyActualDeviceImpl notify, virDomainNetReleaseActualDeviceImpl release, virDomainNetBandwidthChangeAllowedImpl bandwidth= ChangeAllowed, - virDomainNetBandwidthUpdateImpl bandwidthUpdate, - virDomainNetResolveActualTypeImpl resolveActualT= ype) + virDomainNetBandwidthUpdateImpl bandwidthUpdate) { netAllocate =3D allocate; netNotify =3D notify; netRelease =3D release; netBandwidthChangeAllowed =3D bandwidthChangeAllowed; netBandwidthUpdate =3D bandwidthUpdate; - netResolveActualType =3D resolveActualType; } =20 int @@ -28908,16 +28905,83 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr if= ace, return netBandwidthUpdate(iface, newBandwidth); } =20 +/* virDomainNetResolveActualType: + * @iface: the original NetDef from the domain + * + * Looks up the network reference by iface, and returns the actual + * type of the connection without allocating any resources. + * + * Returns 0 on success, -1 on failure. + */ int virDomainNetResolveActualType(virDomainNetDefPtr iface) { - if (!netResolveActualType) { - virReportError(VIR_ERR_NO_SUPPORT, "%s", - _("Network device resolve type not available")); + virConnectPtr conn =3D NULL; + virNetworkPtr net =3D NULL; + char *xml =3D NULL; + virNetworkDefPtr def =3D NULL; + int ret =3D -1; + + if (iface->type !=3D VIR_DOMAIN_NET_TYPE_NETWORK) + return iface->type; + + if (iface->data.network.actual) + return iface->data.network.actual->type; + + if (!(conn =3D virGetConnectNetwork())) return -1; + + if (!(net =3D virNetworkLookupByName(conn, iface->data.network.name))) + goto cleanup; + + if (!(xml =3D virNetworkGetXMLDesc(net, 0))) + goto cleanup; + + if (!(def =3D virNetworkDefParseString(xml))) + goto cleanup; + + if ((def->forward.type =3D=3D VIR_NETWORK_FORWARD_NONE) || + (def->forward.type =3D=3D VIR_NETWORK_FORWARD_NAT) || + (def->forward.type =3D=3D VIR_NETWORK_FORWARD_ROUTE) || + (def->forward.type =3D=3D VIR_NETWORK_FORWARD_OPEN)) { + /* for these forward types, the actual net type really *is* + * NETWORK; we just keep the info from the portgroup in + * iface->data.network.actual + */ + ret =3D VIR_DOMAIN_NET_TYPE_NETWORK; + + } else if ((def->forward.type =3D=3D VIR_NETWORK_FORWARD_BRIDGE) && + def->bridge) { + + /* + * is VIR_DOMAIN_NET_TYPE_BRIDGE + */ + + ret =3D VIR_DOMAIN_NET_TYPE_BRIDGE; + + } else if (def->forward.type =3D=3D VIR_NETWORK_FORWARD_HOSTDEV) { + + ret =3D VIR_DOMAIN_NET_TYPE_HOSTDEV; + + } else if ((def->forward.type =3D=3D VIR_NETWORK_FORWARD_BRIDGE) || + (def->forward.type =3D=3D VIR_NETWORK_FORWARD_PRIVATE) || + (def->forward.type =3D=3D VIR_NETWORK_FORWARD_VEPA) || + (def->forward.type =3D=3D VIR_NETWORK_FORWARD_PASSTHROUGH))= { + + /* are all + * VIR_DOMAIN_NET_TYPE_DIRECT. + */ + + ret =3D VIR_DOMAIN_NET_TYPE_DIRECT; + } =20 - return netResolveActualType(iface); + cleanup: + virNetworkDefFree(def); + VIR_FREE(xml); + virObjectUnref(conn); + virObjectUnref(net); + return ret; } =20 =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6cd81ef2de..7b450ce8f1 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3476,17 +3476,13 @@ typedef int (*virDomainNetBandwidthUpdateImpl)(virDomainNetDefPtr iface, virNetDevBandwidthPtr newBandwidth); =20 -typedef int -(*virDomainNetResolveActualTypeImpl)(virDomainNetDefPtr iface); - =20 void virDomainNetSetDeviceImpl(virDomainNetAllocateActualDeviceImpl allocate, virDomainNetNotifyActualDeviceImpl notify, virDomainNetReleaseActualDeviceImpl release, virDomainNetBandwidthChangeAllowedImpl bandwidth= ChangeAllowed, - virDomainNetBandwidthUpdateImpl bandwidthUpdate, - virDomainNetResolveActualTypeImpl resolveActualT= ype); + virDomainNetBandwidthUpdateImpl bandwidthUpdate); =20 int virDomainNetAllocateActualDevice(virDomainDefPtr dom, @@ -3513,11 +3509,6 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr iface, virNetDevBandwidthPtr newBandwidth) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 -/* XXX this is a nasty hack and should be removed. It should - * be by via public API by fetching XML and parsing it. Not - * easy right now as code paths in QEMU reying on this don't - * have a virConnectPtr handy. - */ int virDomainNetResolveActualType(virDomainNetDefPtr iface) ATTRIBUTE_NONNULL(1); diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index dd6e3402ea..898c946101 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -5146,79 +5146,6 @@ networkReleaseActualDevice(virDomainDefPtr dom, } =20 =20 - -/* networkResolveActualType: - * @iface: the original NetDef from the domain - * - * Looks up the network reference by iface, and returns the actual - * type of the connection without allocating any resources. - * - * Returns 0 on success, -1 on failure. - */ -static int -networkResolveActualType(virDomainNetDefPtr iface) -{ - virNetworkDriverStatePtr driver =3D networkGetDriver(); - virNetworkObjPtr obj =3D NULL; - virNetworkDefPtr netdef =3D NULL; - int ret =3D -1; - - if (!driver || iface->type !=3D VIR_DOMAIN_NET_TYPE_NETWORK) - return iface->type; - - if (iface->data.network.actual) - return iface->data.network.actual->type; - - obj =3D virNetworkObjFindByName(driver->networks, iface->data.network.= name); - if (!obj) { - virReportError(VIR_ERR_NO_NETWORK, - _("no network with matching name '%s'"), - iface->data.network.name); - return -1; - } - netdef =3D virNetworkObjGetDef(obj); - - if ((netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_NONE) || - (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_NAT) || - (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_ROUTE) || - (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_OPEN)) { - /* for these forward types, the actual net type really *is* - * NETWORK; we just keep the info from the portgroup in - * iface->data.network.actual - */ - ret =3D VIR_DOMAIN_NET_TYPE_NETWORK; - - } else if ((netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_BRIDGE) && - netdef->bridge) { - - /* - * is VIR_DOMAIN_NET_TYPE_BRIDGE - */ - - ret =3D VIR_DOMAIN_NET_TYPE_BRIDGE; - - } else if (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_HOSTDEV) { - - ret =3D VIR_DOMAIN_NET_TYPE_HOSTDEV; - - } else if ((netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_BRIDGE) || - (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_PRIVATE) || - (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_VEPA) || - (netdef->forward.type =3D=3D VIR_NETWORK_FORWARD_PASSTHROUG= H)) { - - /* are all - * VIR_DOMAIN_NET_TYPE_DIRECT. - */ - - ret =3D VIR_DOMAIN_NET_TYPE_DIRECT; - - } - - virNetworkObjEndAPI(&obj); - return ret; -} - - /** * networkCheckBandwidth: * @net: network QoS @@ -5717,8 +5644,7 @@ networkRegister(void) networkNotifyActualDevice, networkReleaseActualDevice, networkBandwidthChangeAllowed, - networkBandwidthUpdate, - networkResolveActualType); + networkBandwidthUpdate); =20 return 0; } diff --git a/tests/Makefile.am b/tests/Makefile.am index 4ff3fa742a..d9b3a99477 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -280,7 +280,7 @@ test_libraries +=3D virmocklibxl.la endif WITH_LIBXL =20 if WITH_QEMU -test_programs +=3D qemuxml2xmltest \ +test_programs +=3D qemuxml2argvtest qemuxml2xmltest \ qemuargv2xmltest qemuhelptest domainsnapshotxml2xmltest \ qemumonitortest qemumonitorjsontest qemuhotplugtest \ qemuagenttest qemucapabilitiestest qemucaps2xmltest \ @@ -288,11 +288,6 @@ test_programs +=3D qemuxml2xmltest \ qemucommandutiltest \ qemublocktest \ $(NULL) -if WITH_NETWORK -# Dep on the network driver callback for resolving NIC -# actual type. XXX remove this dep. -test_programs +=3D qemuxml2argvtest -endif WITH_NETWORK test_helpers +=3D qemucapsprobe test_libraries +=3D libqemumonitortestutils.la \ libqemutestdriver.la \ --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780170126742.5113212617152; Fri, 16 Feb 2018 03:22:50 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BD37528225; Fri, 16 Feb 2018 11:22:48 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9A05B60474; Fri, 16 Feb 2018 11:22:48 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6236E18033EA; Fri, 16 Feb 2018 11:22:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMSr3012915 for ; Fri, 16 Feb 2018 06:22:29 -0500 Received: by smtp.corp.redhat.com (Postfix) id CD70F2026DFD; Fri, 16 Feb 2018 11:22:28 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 93E0C2024CA1; Fri, 16 Feb 2018 11:22:27 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:15 +0000 Message-Id: <20180216112222.26572-4-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 03/10] qemu: stop passing virConnectPtr into qemuMonitorStartCPUs X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Fri, 16 Feb 2018 11:22:49 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 There is a long standing hack to pass a virConnectPtr into the qemuMonitorStartCPUs method, so that when the text monitor prompts for a disk password, we can lookup virSecretPtr objects. This causes us to have to pass a virConnectPtr around through countless methods up the call chain....except some places don't have any virConnectPtr available so have always just passed NULL. We can finally fix this disastrous design by using virGetConnectSecret() to open a connection to the secret driver at time of use. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_driver.c | 32 +++++++++++++++----------------- src/qemu/qemu_migration.c | 6 +++--- src/qemu/qemu_monitor.c | 10 ++++------ src/qemu/qemu_monitor.h | 11 +---------- src/qemu/qemu_monitor_json.c | 3 +-- src/qemu/qemu_monitor_json.h | 3 +-- src/qemu/qemu_monitor_text.c | 9 +++------ src/qemu/qemu_monitor_text.h | 3 +-- src/qemu/qemu_process.c | 32 +++++++++++++++----------------- src/qemu/qemu_process.h | 4 +--- tests/qemumonitorjsontest.c | 2 +- 11 files changed, 46 insertions(+), 69 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bbce5bd81b..134deb05a0 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1954,7 +1954,7 @@ static int qemuDomainResume(virDomainPtr dom) } else if ((state =3D=3D VIR_DOMAIN_CRASHED && reason =3D=3D VIR_DOMAIN_CRASHED_PANICKED) || state =3D=3D VIR_DOMAIN_PAUSED) { - if (qemuProcessStartCPUs(driver, vm, dom->conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_NONE) < 0) { if (virGetLastError() =3D=3D NULL) @@ -3346,7 +3346,7 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, * this returns (whether returning success or failure). */ static int -qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom, +qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *path, int compressed, const char *compressedpath, const char *xmlin, unsigned int flags) @@ -3447,7 +3447,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDo= mainPtr dom, if (ret < 0) { if (was_running && virDomainObjIsActive(vm)) { virErrorPtr save_err =3D virSaveLastError(); - if (qemuProcessStartCPUs(driver, vm, dom->conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_SAVE_CANCELED, QEMU_ASYNC_JOB_SAVE) < 0) { VIR_WARN("Unable to resume guest CPUs after save failure"); @@ -3582,7 +3582,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *pat= h, const char *dxml, goto cleanup; } =20 - ret =3D qemuDomainSaveInternal(driver, dom, vm, path, compressed, + ret =3D qemuDomainSaveInternal(driver, vm, path, compressed, compressedpath, dxml, flags); =20 cleanup: @@ -3656,7 +3656,7 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int = flags) =20 VIR_INFO("Saving state of domain '%s' to '%s'", vm->def->name, name); =20 - ret =3D qemuDomainSaveInternal(driver, dom, vm, name, compressed, + ret =3D qemuDomainSaveInternal(driver, vm, name, compressed, compressedpath, NULL, flags); if (ret =3D=3D 0) vm->hasManagedSave =3D true; @@ -4029,7 +4029,7 @@ qemuDomainCoreDumpWithFormat(virDomainPtr dom, } =20 if (resume && virDomainObjIsActive(vm)) { - if (qemuProcessStartCPUs(driver, vm, dom->conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_DUMP) < 0) { event =3D virDomainEventLifecycleNewFromObj(vm, @@ -4216,7 +4216,7 @@ processWatchdogEvent(virQEMUDriverPtr driver, virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Dump failed")); =20 - ret =3D qemuProcessStartCPUs(driver, vm, NULL, + ret =3D qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_DUMP); =20 @@ -6677,7 +6677,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, =20 /* If it was running before, resume it now unless caller requested pau= se. */ if (header->was_running && !start_paused) { - if (qemuProcessStartCPUs(driver, vm, conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_RESTORED, asyncJob) < 0) { if (virGetLastError() =3D=3D NULL) @@ -14005,8 +14005,7 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDri= verPtr driver, =20 /* The domain is expected to be locked and active. */ static int -qemuDomainSnapshotCreateActiveInternal(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainSnapshotCreateActiveInternal(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainSnapshotObjPtr snap, unsigned int flags) @@ -14062,7 +14061,7 @@ qemuDomainSnapshotCreateActiveInternal(virConnectPt= r conn, =20 cleanup: if (resume && virDomainObjIsActive(vm) && - qemuProcessStartCPUs(driver, vm, conn, + qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_SNAPSHOT) < 0) { event =3D virDomainEventLifecycleNewFromObj(vm, @@ -14878,8 +14877,7 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr= driver, =20 =20 static int -qemuDomainSnapshotCreateActiveExternal(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainSnapshotCreateActiveExternal(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainSnapshotObjPtr snap, unsigned int flags) @@ -15026,7 +15024,7 @@ qemuDomainSnapshotCreateActiveExternal(virConnectPt= r conn, =20 cleanup: if (resume && virDomainObjIsActive(vm) && - qemuProcessStartCPUs(driver, vm, conn, + qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_SNAPSHOT) < 0) { event =3D virDomainEventLifecycleNewFromObj(vm, @@ -15279,12 +15277,12 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY || snap->def->memory =3D=3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL= ) { /* external checkpoint or disk snapshot */ - if (qemuDomainSnapshotCreateActiveExternal(domain->conn, drive= r, + if (qemuDomainSnapshotCreateActiveExternal(driver, vm, snap, flags) < = 0) goto endjob; } else { /* internal checkpoint */ - if (qemuDomainSnapshotCreateActiveInternal(domain->conn, drive= r, + if (qemuDomainSnapshotCreateActiveInternal(driver, vm, snap, flags) < = 0) goto endjob; } @@ -16003,7 +16001,7 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr sna= pshot, _("guest unexpectedly quit")); goto endjob; } - rc =3D qemuProcessStartCPUs(driver, vm, snapshot->domain->conn, + rc =3D qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_FROM_SNAPSHOT, QEMU_ASYNC_JOB_START); if (rc < 0) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3641b801f6..88639c71fc 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -273,7 +273,7 @@ qemuMigrationRestoreDomainState(virConnectPtr conn, vir= DomainObjPtr vm) VIR_DEBUG("Restoring pre-migration state due to migration error"); =20 /* we got here through some sort of failure; start the domain agai= n */ - if (qemuProcessStartCPUs(driver, vm, conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_MIGRATION_CANCELED, QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) { /* Hm, we already know we are in error here. We don't want to @@ -2853,7 +2853,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto stopjob; =20 - if (qemuProcessFinishStartup(dconn, driver, vm, QEMU_ASYNC_JOB_MIGRATI= ON_IN, + if (qemuProcessFinishStartup(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, false, VIR_DOMAIN_PAUSED_MIGRATION) < 0) goto stopjob; =20 @@ -5389,7 +5389,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, * >=3D 0.10.6 to work properly. This isn't strictly necessary on * older qemu's, but it also doesn't hurt anything there */ - if (qemuProcessStartCPUs(driver, vm, dconn, + if (qemuProcessStartCPUs(driver, vm, inPostCopy ? VIR_DOMAIN_RUNNING_POSTCOPY : VIR_DOMAIN_RUNNING_MIGRATED, QEMU_ASYNC_JOB_MIGRATION_IN) < 0) { diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 9b5ad72cf9..ad5c572aee 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -1319,7 +1319,6 @@ qemuMonitorHMPCommandWithFd(qemuMonitorPtr mon, =20 int qemuMonitorGetDiskSecret(qemuMonitorPtr mon, - virConnectPtr conn, const char *path, char **secret, size_t *secretLen) @@ -1328,7 +1327,7 @@ qemuMonitorGetDiskSecret(qemuMonitorPtr mon, *secret =3D NULL; *secretLen =3D 0; =20 - QEMU_MONITOR_CALLBACK(mon, ret, diskSecretLookup, conn, mon->vm, + QEMU_MONITOR_CALLBACK(mon, ret, diskSecretLookup, mon->vm, path, secret, secretLen); return ret; } @@ -1700,15 +1699,14 @@ qemuMonitorSetCapabilities(qemuMonitorPtr mon) =20 =20 int -qemuMonitorStartCPUs(qemuMonitorPtr mon, - virConnectPtr conn) +qemuMonitorStartCPUs(qemuMonitorPtr mon) { QEMU_CHECK_MONITOR(mon); =20 if (mon->json) - return qemuMonitorJSONStartCPUs(mon, conn); + return qemuMonitorJSONStartCPUs(mon); else - return qemuMonitorTextStartCPUs(mon, conn); + return qemuMonitorTextStartCPUs(mon); } =20 =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index ea0c01ae7f..954ae88e4f 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -109,13 +109,7 @@ typedef void (*qemuMonitorEofNotifyCallback)(qemuMonit= orPtr mon, typedef void (*qemuMonitorErrorNotifyCallback)(qemuMonitorPtr mon, virDomainObjPtr vm, void *opaque); -/* XXX we'd really like to avoid virConnectPtr here - * It is required so the callback can find the active - * secret driver. Need to change this to work like the - * security drivers do, to avoid this - */ typedef int (*qemuMonitorDiskSecretLookupCallback)(qemuMonitorPtr mon, - virConnectPtr conn, virDomainObjPtr vm, const char *path, char **secret, @@ -363,9 +357,7 @@ int qemuMonitorHMPCommandWithFd(qemuMonitorPtr mon, # define qemuMonitorHMPCommand(mon, cmd, reply) \ qemuMonitorHMPCommandWithFd(mon, cmd, -1, reply) =20 -/* XXX same comment about virConnectPtr as above */ int qemuMonitorGetDiskSecret(qemuMonitorPtr mon, - virConnectPtr conn, const char *path, char **secret, size_t *secretLen); @@ -440,8 +432,7 @@ int qemuMonitorEmitDumpCompleted(qemuMonitorPtr mon, qemuMonitorDumpStatsPtr stats, const char *error); =20 -int qemuMonitorStartCPUs(qemuMonitorPtr mon, - virConnectPtr conn); +int qemuMonitorStartCPUs(qemuMonitorPtr mon); int qemuMonitorStopCPUs(qemuMonitorPtr mon); =20 typedef enum { diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 242b92ea3f..a09e93e464 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -1274,8 +1274,7 @@ qemuMonitorJSONSetCapabilities(qemuMonitorPtr mon) =20 =20 int -qemuMonitorJSONStartCPUs(qemuMonitorPtr mon, - virConnectPtr conn ATTRIBUTE_UNUSED) +qemuMonitorJSONStartCPUs(qemuMonitorPtr mon) { int ret; virJSONValuePtr cmd =3D qemuMonitorJSONMakeCommand("cont", NULL); diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index a62e2418dc..ec243becc4 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -48,8 +48,7 @@ int qemuMonitorJSONHumanCommandWithFd(qemuMonitorPtr mon, =20 int qemuMonitorJSONSetCapabilities(qemuMonitorPtr mon); =20 -int qemuMonitorJSONStartCPUs(qemuMonitorPtr mon, - virConnectPtr conn); +int qemuMonitorJSONStartCPUs(qemuMonitorPtr mon); int qemuMonitorJSONStopCPUs(qemuMonitorPtr mon); int qemuMonitorJSONGetStatus(qemuMonitorPtr mon, bool *running, diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 2db71548cb..7c34ca5b07 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -293,9 +293,8 @@ qemuMonitorSendDiskPassphrase(qemuMonitorPtr mon, qemuMonitorMessagePtr msg, const char *data, size_t len ATTRIBUTE_UNUSED, - void *opaque) + void *opaque ATTRIBUTE_UNUSED) { - virConnectPtr conn =3D opaque; char *path; char *passphrase =3D NULL; size_t passphrase_len =3D 0; @@ -326,7 +325,6 @@ qemuMonitorSendDiskPassphrase(qemuMonitorPtr mon, =20 /* Fetch the disk password if possible */ res =3D qemuMonitorGetDiskSecret(mon, - conn, path, &passphrase, &passphrase_len); @@ -358,14 +356,13 @@ qemuMonitorSendDiskPassphrase(qemuMonitorPtr mon, } =20 int -qemuMonitorTextStartCPUs(qemuMonitorPtr mon, - virConnectPtr conn) +qemuMonitorTextStartCPUs(qemuMonitorPtr mon) { char *reply; =20 if (qemuMonitorTextCommandWithHandler(mon, "cont", qemuMonitorSendDiskPassphrase, - conn, + NULL, -1, &reply) < 0) return -1; =20 diff --git a/src/qemu/qemu_monitor_text.h b/src/qemu/qemu_monitor_text.h index 86f43e7c55..d57bdbc55f 100644 --- a/src/qemu/qemu_monitor_text.h +++ b/src/qemu/qemu_monitor_text.h @@ -39,8 +39,7 @@ int qemuMonitorTextCommandWithFd(qemuMonitorPtr mon, int scm_fd, char **reply); =20 -int qemuMonitorTextStartCPUs(qemuMonitorPtr mon, - virConnectPtr conn); +int qemuMonitorTextStartCPUs(qemuMonitorPtr mon); int qemuMonitorTextStopCPUs(qemuMonitorPtr mon); int qemuMonitorTextGetStatus(qemuMonitorPtr mon, bool *running, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 10211de871..d0a25cecb9 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -447,13 +447,13 @@ qemuProcessGetVolumeQcowPassphrase(virConnectPtr conn, =20 static int qemuProcessFindVolumeQcowPassphrase(qemuMonitorPtr mon ATTRIBUTE_UNUSED, - virConnectPtr conn, virDomainObjPtr vm, const char *path, char **secretRet, size_t *secretLen, void *opaque ATTRIBUTE_UNUSED) { + virConnectPtr conn =3D NULL; virDomainDiskDefPtr disk; int ret =3D -1; =20 @@ -465,9 +465,11 @@ qemuProcessFindVolumeQcowPassphrase(qemuMonitorPtr mon= ATTRIBUTE_UNUSED, goto cleanup; } =20 + conn =3D virGetConnectSecret(); ret =3D qemuProcessGetVolumeQcowPassphrase(conn, disk, secretRet, secr= etLen); =20 cleanup: + virObjectUnref(conn); virObjectUnlock(vm); return ret; } @@ -565,7 +567,7 @@ qemuProcessFakeReboot(void *opaque) if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_CRASHED) reason =3D VIR_DOMAIN_RUNNING_CRASHED; =20 - if (qemuProcessStartCPUs(driver, vm, NULL, + if (qemuProcessStartCPUs(driver, vm, reason, QEMU_ASYNC_JOB_NONE) < 0) { if (virGetLastError() =3D=3D NULL) @@ -2854,7 +2856,7 @@ qemuProcessPrepareMonitorChr(virDomainChrSourceDefPtr= monConfig, */ int qemuProcessStartCPUs(virQEMUDriverPtr driver, virDomainObjPtr vm, - virConnectPtr conn, virDomainRunningReason reason, + virDomainRunningReason reason, qemuDomainAsyncJob asyncJob) { int ret =3D -1; @@ -2879,7 +2881,7 @@ qemuProcessStartCPUs(virQEMUDriverPtr driver, virDoma= inObjPtr vm, if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) goto release; =20 - ret =3D qemuMonitorStartCPUs(priv->mon, conn); + ret =3D qemuMonitorStartCPUs(priv->mon); if (qemuDomainObjExitMonitor(driver, vm) < 0) ret =3D -1; =20 @@ -3040,7 +3042,6 @@ qemuProcessUpdateState(virQEMUDriverPtr driver, virDo= mainObjPtr vm) static int qemuProcessRecoverMigrationIn(virQEMUDriverPtr driver, virDomainObjPtr vm, - virConnectPtr conn, qemuMigrationJobPhase phase, virDomainState state, int reason) @@ -3072,7 +3073,7 @@ qemuProcessRecoverMigrationIn(virQEMUDriverPtr driver, * and hope we are all set */ VIR_DEBUG("Incoming migration finished, resuming domain %s", vm->def->name); - if (qemuProcessStartCPUs(driver, vm, conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_NONE) < 0) { VIR_WARN("Could not resume domain %s", vm->def->name); @@ -3099,7 +3100,6 @@ qemuProcessRecoverMigrationIn(virQEMUDriverPtr driver, static int qemuProcessRecoverMigrationOut(virQEMUDriverPtr driver, virDomainObjPtr vm, - virConnectPtr conn, qemuMigrationJobPhase phase, virDomainState state, int reason, @@ -3179,7 +3179,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr drive= r, if (state =3D=3D VIR_DOMAIN_PAUSED && (reason =3D=3D VIR_DOMAIN_PAUSED_MIGRATION || reason =3D=3D VIR_DOMAIN_PAUSED_UNKNOWN)) { - if (qemuProcessStartCPUs(driver, vm, conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_NONE) < 0) { VIR_WARN("Could not resume domain %s", vm->def->name); @@ -3194,7 +3194,6 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr drive= r, static int qemuProcessRecoverJob(virQEMUDriverPtr driver, virDomainObjPtr vm, - virConnectPtr conn, const struct qemuDomainJobObj *job, unsigned int *stopFlags) { @@ -3206,13 +3205,13 @@ qemuProcessRecoverJob(virQEMUDriverPtr driver, =20 switch (job->asyncJob) { case QEMU_ASYNC_JOB_MIGRATION_OUT: - if (qemuProcessRecoverMigrationOut(driver, vm, conn, job->phase, + if (qemuProcessRecoverMigrationOut(driver, vm, job->phase, state, reason, stopFlags) < 0) return -1; break; =20 case QEMU_ASYNC_JOB_MIGRATION_IN: - if (qemuProcessRecoverMigrationIn(driver, vm, conn, job->phase, + if (qemuProcessRecoverMigrationIn(driver, vm, job->phase, state, reason) < 0) return -1; break; @@ -3237,7 +3236,7 @@ qemuProcessRecoverJob(virQEMUDriverPtr driver, (reason =3D=3D VIR_DOMAIN_PAUSED_SNAPSHOT || reason =3D=3D VIR_DOMAIN_PAUSED_MIGRATION)) || reason =3D=3D VIR_DOMAIN_PAUSED_UNKNOWN)) { - if (qemuProcessStartCPUs(driver, vm, conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_NONE) < 0) { VIR_WARN("Could not resume domain '%s' after migration to= file", @@ -6260,8 +6259,7 @@ qemuProcessRefreshState(virQEMUDriverPtr driver, * Finish starting a new domain. */ int -qemuProcessFinishStartup(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessFinishStartup(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuDomainAsyncJob asyncJob, bool startCPUs, @@ -6272,7 +6270,7 @@ qemuProcessFinishStartup(virConnectPtr conn, =20 if (startCPUs) { VIR_DEBUG("Starting domain CPUs"); - if (qemuProcessStartCPUs(driver, vm, conn, + if (qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_BOOTED, asyncJob) < 0) { if (!virGetLastError()) @@ -6366,7 +6364,7 @@ qemuProcessStart(virConnectPtr conn, qemuMigrationRunIncoming(driver, vm, incoming->deferredURI, asyncJ= ob) < 0) goto stop; =20 - if (qemuProcessFinishStartup(conn, driver, vm, asyncJob, + if (qemuProcessFinishStartup(driver, vm, asyncJob, !(flags & VIR_QEMU_PROCESS_START_PAUSED), incoming ? VIR_DOMAIN_PAUSED_MIGRATION : @@ -7470,7 +7468,7 @@ qemuProcessReconnect(void *opaque) if (qemuProcessRefreshBalloonState(driver, obj, QEMU_ASYNC_JOB_NONE) <= 0) goto error; =20 - if (qemuProcessRecoverJob(driver, obj, conn, &oldjob, &stopFlags) < 0) + if (qemuProcessRecoverJob(driver, obj, &oldjob, &stopFlags) < 0) goto error; =20 if (qemuProcessUpdateDevices(driver, obj) < 0) diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 8d210282f8..42f92eb458 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -30,7 +30,6 @@ int qemuProcessPrepareMonitorChr(virDomainChrSourceDefPtr= monConfig, =20 int qemuProcessStartCPUs(virQEMUDriverPtr driver, virDomainObjPtr vm, - virConnectPtr conn, virDomainRunningReason reason, qemuDomainAsyncJob asyncJob); int qemuProcessStopCPUs(virQEMUDriverPtr driver, @@ -126,8 +125,7 @@ int qemuProcessLaunch(virConnectPtr conn, virNetDevVPortProfileOp vmop, unsigned int flags); =20 -int qemuProcessFinishStartup(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuProcessFinishStartup(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuDomainAsyncJob asyncJob, bool startCPUs, diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 1eeefbce9b..908ec3a3c8 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -1238,7 +1238,7 @@ testQemuMonitorJSONCPU(const void *data) goto cleanup; } =20 - if (qemuMonitorJSONStartCPUs(qemuMonitorTestGetMonitor(test), NULL) < = 0) + if (qemuMonitorJSONStartCPUs(qemuMonitorTestGetMonitor(test)) < 0) goto cleanup; =20 if (qemuMonitorGetStatus(qemuMonitorTestGetMonitor(test), --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15187801556150.5265043365156998; Fri, 16 Feb 2018 03:22:35 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 19FEE1752D6; Fri, 16 Feb 2018 11:22:34 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B25FB608F5; Fri, 16 Feb 2018 11:22:33 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 46B844A470; Fri, 16 Feb 2018 11:22:33 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMUDU012925 for ; Fri, 16 Feb 2018 06:22:30 -0500 Received: by smtp.corp.redhat.com (Postfix) id 1125F2024CA4; Fri, 16 Feb 2018 11:22:30 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3C155202699C; Fri, 16 Feb 2018 11:22:29 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:16 +0000 Message-Id: <20180216112222.26572-5-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 04/10] conf: stop passing virConnectPtr into virDomainDiskTranslateSourcePool X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Fri, 16 Feb 2018 11:22:34 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Rather than expecting callers to pass a virConnectPtr into the virDomainDiskTranslateSourcePool() method, just acquire a connection to the storage driver when needed. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/conf/domain_conf.c | 10 +++++++--- src/conf/domain_conf.h | 3 +-- src/qemu/qemu_conf.c | 3 +-- src/qemu/qemu_conf.h | 3 +-- src/qemu/qemu_driver.c | 39 ++++++++++++++++----------------------- src/qemu/qemu_hotplug.c | 2 +- src/qemu/qemu_process.c | 4 ++-- tests/qemuxml2argvtest.c | 5 +++++ 8 files changed, 34 insertions(+), 35 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 4f50547580..613e34f8c4 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -29068,9 +29068,9 @@ virDomainDiskTranslateSourcePoolAuth(virDomainDiskD= efPtr def, =20 =20 int -virDomainDiskTranslateSourcePool(virConnectPtr conn, - virDomainDiskDefPtr def) +virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def) { + virConnectPtr conn =3D NULL; virStoragePoolDefPtr pooldef =3D NULL; virStoragePoolPtr pool =3D NULL; virStorageVolPtr vol =3D NULL; @@ -29084,9 +29084,12 @@ virDomainDiskTranslateSourcePool(virConnectPtr con= n, if (!def->src->srcpool) return 0; =20 - if (!(pool =3D virStoragePoolLookupByName(conn, def->src->srcpool->poo= l))) + if (!(conn =3D virGetConnectStorage())) return -1; =20 + if (!(pool =3D virStoragePoolLookupByName(conn, def->src->srcpool->poo= l))) + goto cleanup; + if (virStoragePoolIsActive(pool) !=3D 1) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("storage pool '%s' containing volume '%s' " @@ -29230,6 +29233,7 @@ virDomainDiskTranslateSourcePool(virConnectPtr conn, =20 ret =3D 0; cleanup: + virObjectUnref(conn); virObjectUnref(pool); virObjectUnref(vol); VIR_FREE(poolxml); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 7b450ce8f1..8be08bc9b3 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3514,8 +3514,7 @@ virDomainNetResolveActualType(virDomainNetDefPtr ifac= e) ATTRIBUTE_NONNULL(1); =20 =20 -int virDomainDiskTranslateSourcePool(virConnectPtr conn, - virDomainDiskDefPtr def); +int virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def); =20 =20 #endif /* __DOMAIN_CONF_H */ diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index af503d31cb..36cf3a281c 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1631,8 +1631,7 @@ int qemuDriverAllocateID(virQEMUDriverPtr driver) =20 =20 int -qemuTranslateSnapshotDiskSourcePool(virConnectPtr conn ATTRIBUTE_UNUSED, - virDomainSnapshotDiskDefPtr def) +qemuTranslateSnapshotDiskSourcePool(virDomainSnapshotDiskDefPtr def) { if (def->src->type !=3D VIR_STORAGE_TYPE_VOLUME) return 0; diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index a553e30e2e..83fd452827 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -349,8 +349,7 @@ int qemuSetUnprivSGIO(virDomainDeviceDefPtr dev); int qemuDriverAllocateID(virQEMUDriverPtr driver); virDomainXMLOptionPtr virQEMUDriverCreateXMLConf(virQEMUDriverPtr driver); =20 -int qemuTranslateSnapshotDiskSourcePool(virConnectPtr conn, - virDomainSnapshotDiskDefPtr def); +int qemuTranslateSnapshotDiskSourcePool(virDomainSnapshotDiskDefPtr def); =20 char * qemuGetBaseHugepagePath(virHugeTLBFSPtr hugepage); char * qemuGetDomainHugepagePath(const virDomainDef *def, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 134deb05a0..031bdeb5f6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7871,8 +7871,7 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm, } =20 static int -qemuDomainChangeDiskLive(virConnectPtr conn, - virDomainObjPtr vm, +qemuDomainChangeDiskLive(virDomainObjPtr vm, virDomainDeviceDefPtr dev, virQEMUDriverPtr driver, bool force) @@ -7881,7 +7880,7 @@ qemuDomainChangeDiskLive(virConnectPtr conn, virDomainDiskDefPtr orig_disk =3D NULL; int ret =3D -1; =20 - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) + if (virDomainDiskTranslateSourcePool(disk) < 0) goto cleanup; =20 if (qemuDomainDetermineDiskChain(driver, vm, disk, false, true) < 0) @@ -7932,8 +7931,7 @@ qemuDomainChangeDiskLive(virConnectPtr conn, } =20 static int -qemuDomainUpdateDeviceLive(virConnectPtr conn, - virDomainObjPtr vm, +qemuDomainUpdateDeviceLive(virDomainObjPtr vm, virDomainDeviceDefPtr dev, virDomainPtr dom, bool force) @@ -7944,7 +7942,7 @@ qemuDomainUpdateDeviceLive(virConnectPtr conn, switch ((virDomainDeviceType) dev->type) { case VIR_DOMAIN_DEVICE_DISK: qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, NULL); - ret =3D qemuDomainChangeDiskLive(conn, vm, dev, driver, force); + ret =3D qemuDomainChangeDiskLive(vm, dev, driver, force); break; case VIR_DOMAIN_DEVICE_GRAPHICS: ret =3D qemuDomainChangeGraphics(driver, vm, dev->data.graphics); @@ -7986,7 +7984,6 @@ qemuDomainUpdateDeviceLive(virConnectPtr conn, static int qemuDomainAttachDeviceConfig(virDomainDefPtr vmdef, virDomainDeviceDefPtr dev, - virConnectPtr conn, virCapsPtr caps, unsigned int parse_flags, virDomainXMLOptionPtr xmlopt) @@ -8008,7 +8005,7 @@ qemuDomainAttachDeviceConfig(virDomainDefPtr vmdef, _("target %s already exists"), disk->dst); return -1; } - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) + if (virDomainDiskTranslateSourcePool(disk) < 0) return -1; if (qemuCheckDiskConfig(disk, NULL) < 0) return -1; @@ -8494,7 +8491,7 @@ qemuDomainAttachDeviceLiveAndConfig(virConnectPtr con= n, =20 if (virDomainDefCompatibleDevice(vmdef, dev) < 0) goto cleanup; - if ((ret =3D qemuDomainAttachDeviceConfig(vmdef, dev, conn, caps, + if ((ret =3D qemuDomainAttachDeviceConfig(vmdef, dev, caps, parse_flags, driver->xmlopt)) < 0) goto cleanup; @@ -8654,7 +8651,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr d= om, if (virDomainDefCompatibleDevice(vm->def, dev_copy) < 0) goto endjob; =20 - if ((ret =3D qemuDomainUpdateDeviceLive(dom->conn, vm, dev_copy, d= om, force)) < 0) + if ((ret =3D qemuDomainUpdateDeviceLive(vm, dev_copy, dom, force))= < 0) goto endjob; /* * update domain status forcibly because the domain status may be @@ -14229,8 +14226,7 @@ qemuDomainSnapshotPrepareDiskExternalActive(virDoma= inSnapshotDiskDefPtr snapdisk =20 =20 static int -qemuDomainSnapshotPrepareDiskExternal(virConnectPtr conn, - virDomainDiskDefPtr disk, +qemuDomainSnapshotPrepareDiskExternal(virDomainDiskDefPtr disk, virDomainSnapshotDiskDefPtr snapdisk, bool active, bool reuse) @@ -14238,11 +14234,11 @@ qemuDomainSnapshotPrepareDiskExternal(virConnectP= tr conn, int ret =3D -1; struct stat st; =20 - if (qemuTranslateSnapshotDiskSourcePool(conn, snapdisk) < 0) + if (qemuTranslateSnapshotDiskSourcePool(snapdisk) < 0) return -1; =20 if (!active) { - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) + if (virDomainDiskTranslateSourcePool(disk) < 0) return -1; =20 if (qemuDomainSnapshotPrepareDiskExternalInactive(snapdisk, disk) = < 0) @@ -14284,8 +14280,7 @@ qemuDomainSnapshotPrepareDiskExternal(virConnectPtr= conn, =20 =20 static int -qemuDomainSnapshotPrepareDiskInternal(virConnectPtr conn, - virDomainDiskDefPtr disk, +qemuDomainSnapshotPrepareDiskInternal(virDomainDiskDefPtr disk, bool active) { int actualType; @@ -14294,7 +14289,7 @@ qemuDomainSnapshotPrepareDiskInternal(virConnectPtr= conn, if (active) return 0; =20 - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) + if (virDomainDiskTranslateSourcePool(disk) < 0) return -1; =20 actualType =3D virStorageSourceGetActualType(disk->src); @@ -14343,8 +14338,7 @@ qemuDomainSnapshotPrepareDiskInternal(virConnectPtr= conn, =20 =20 static int -qemuDomainSnapshotPrepare(virConnectPtr conn, - virDomainObjPtr vm, +qemuDomainSnapshotPrepare(virDomainObjPtr vm, virDomainSnapshotDefPtr def, unsigned int *flags) { @@ -14385,7 +14379,7 @@ qemuDomainSnapshotPrepare(virConnectPtr conn, goto cleanup; } =20 - if (qemuDomainSnapshotPrepareDiskInternal(conn, dom_disk, + if (qemuDomainSnapshotPrepareDiskInternal(dom_disk, active) < 0) goto cleanup; =20 @@ -14414,7 +14408,7 @@ qemuDomainSnapshotPrepare(virConnectPtr conn, goto cleanup; } =20 - if (qemuDomainSnapshotPrepareDiskExternal(conn, dom_disk, disk, + if (qemuDomainSnapshotPrepareDiskExternal(dom_disk, disk, active, reuse) < 0) goto cleanup; =20 @@ -15062,7 +15056,6 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, const char *xmlDesc, unsigned int flags) { - virConnectPtr conn =3D domain->conn; virQEMUDriverPtr driver =3D domain->conn->privateData; virDomainObjPtr vm =3D NULL; char *xml =3D NULL; @@ -15241,7 +15234,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, } if (virDomainSnapshotAlignDisks(def, align_location, align_match) < 0 || - qemuDomainSnapshotPrepare(conn, vm, def, &flags) < 0) + qemuDomainSnapshotPrepare(vm, def, &flags) < 0) goto endjob; } =20 diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index c9868de778..ee8b53b719 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -713,7 +713,7 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn, goto cleanup; } =20 - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) + if (virDomainDiskTranslateSourcePool(disk) < 0) goto cleanup; =20 if (qemuAddSharedDevice(driver, dev, vm->def->name) < 0) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d0a25cecb9..586d11bba3 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5603,7 +5603,7 @@ qemuProcessPrepareDomainStorage(virConnectPtr conn, size_t idx =3D i - 1; virDomainDiskDefPtr disk =3D vm->def->disks[idx]; =20 - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) { + if (virDomainDiskTranslateSourcePool(disk) < 0) { if (qemuDomainCheckDiskStartupPolicy(driver, vm, idx, cold_boo= t) < 0) return -1; =20 @@ -7362,7 +7362,7 @@ qemuProcessReconnect(void *opaque) virDomainDiskDefPtr disk =3D obj->def->disks[i]; virDomainDeviceDef dev; =20 - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) + if (virDomainDiskTranslateSourcePool(disk) < 0) goto error; =20 /* backing chains need to be refreshed only if they could change */ diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index b341467143..fa261fc805 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -429,6 +429,9 @@ testCompareXMLToArgv(const void *data) conn->secretDriver =3D &fakeSecretDriver; conn->storageDriver =3D &fakeStorageDriver; =20 + virSetConnectSecret(conn); + virSetConnectStorage(conn); + if (virQEMUCapsGet(info->qemuCaps, QEMU_CAPS_MONITOR_JSON)) flags |=3D FLAG_JSON; =20 @@ -536,6 +539,8 @@ testCompareXMLToArgv(const void *data) virDomainChrSourceDefClear(&monitor_chr); virCommandFree(cmd); virObjectUnref(vm); + virSetConnectSecret(NULL); + virSetConnectStorage(NULL); virObjectUnref(conn); VIR_FREE(migrateURI); VIR_FREE(xml); --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780174395764.1417244116171; Fri, 16 Feb 2018 03:22:54 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7A7A581DF0; Fri, 16 Feb 2018 11:22:52 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 53EB05D756; Fri, 16 Feb 2018 11:22:52 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1A4C24A474; Fri, 16 Feb 2018 11:22:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMVg9012935 for ; Fri, 16 Feb 2018 06:22:31 -0500 Received: by smtp.corp.redhat.com (Postfix) id 644B62024CA1; Fri, 16 Feb 2018 11:22:31 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 632A92026DFD; Fri, 16 Feb 2018 11:22:30 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:17 +0000 Message-Id: <20180216112222.26572-6-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 05/10] qemu: don't pass virConnectPtr around for secrets X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 16 Feb 2018 11:22:53 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 During domain startup there are many places where we need to acquire secrets. Currently code passes around a virConnectPtr, except in the places where we pass in NULL. So there are a few codepaths where ability to start guests using secrets will fail. Change to acquire a handle to the secret driver when needed. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_domain.c | 111 ++++++++++++++++++++++--------------------= ---- src/qemu/qemu_domain.h | 21 ++++----- src/qemu/qemu_driver.c | 18 ++++---- src/qemu/qemu_hotplug.c | 64 +++++++++++--------------- src/qemu/qemu_hotplug.h | 15 +++---- src/qemu/qemu_migration.c | 10 ++--- src/qemu/qemu_process.c | 40 +++++------------ tests/qemuhotplugtest.c | 4 +- 8 files changed, 117 insertions(+), 166 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 178ec24ae7..2182b7927d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1151,7 +1151,6 @@ qemuDomainChrSourcePrivateDispose(void *obj) =20 =20 /* qemuDomainSecretPlainSetup: - * @conn: Pointer to connection * @secinfo: Pointer to secret info * @usageType: The virSecretUsageType * @username: username to use for authentication (may be NULL) @@ -1162,24 +1161,33 @@ qemuDomainChrSourcePrivateDispose(void *obj) * Returns 0 on success, -1 on failure with error message */ static int -qemuDomainSecretPlainSetup(virConnectPtr conn, - qemuDomainSecretInfoPtr secinfo, +qemuDomainSecretPlainSetup(qemuDomainSecretInfoPtr secinfo, virSecretUsageType usageType, const char *username, virSecretLookupTypeDefPtr seclookupdef) { + virConnectPtr conn; + int ret =3D -1; + + conn =3D virGetConnectSecret(); + if (!conn) + return -1; + secinfo->type =3D VIR_DOMAIN_SECRET_INFO_TYPE_PLAIN; if (VIR_STRDUP(secinfo->s.plain.username, username) < 0) - return -1; + goto cleanup; =20 - return virSecretGetSecretString(conn, seclookupdef, usageType, - &secinfo->s.plain.secret, - &secinfo->s.plain.secretlen); + ret =3D virSecretGetSecretString(conn, seclookupdef, usageType, + &secinfo->s.plain.secret, + &secinfo->s.plain.secretlen); + + cleanup: + virObjectUnref(conn); + return ret; } =20 =20 /* qemuDomainSecretAESSetup: - * @conn: Pointer to connection * @priv: pointer to domain private object * @secinfo: Pointer to secret info * @srcalias: Alias of the disk/hostdev used to generate the secret alias @@ -1193,8 +1201,7 @@ qemuDomainSecretPlainSetup(virConnectPtr conn, * Returns 0 on success, -1 on failure with error message */ static int -qemuDomainSecretAESSetup(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretAESSetup(qemuDomainObjPrivatePtr priv, qemuDomainSecretInfoPtr secinfo, const char *srcalias, virSecretUsageType usageType, @@ -1202,6 +1209,7 @@ qemuDomainSecretAESSetup(virConnectPtr conn, virSecretLookupTypeDefPtr seclookupdef, bool isLuks) { + virConnectPtr conn; int ret =3D -1; uint8_t *raw_iv =3D NULL; size_t ivlen =3D QEMU_DOMAIN_AES_IV_LEN; @@ -1210,16 +1218,20 @@ qemuDomainSecretAESSetup(virConnectPtr conn, uint8_t *ciphertext =3D NULL; size_t ciphertextlen =3D 0; =20 + conn =3D virGetConnectSecret(); + if (!conn) + return -1; + secinfo->type =3D VIR_DOMAIN_SECRET_INFO_TYPE_AES; if (VIR_STRDUP(secinfo->s.aes.username, username) < 0) - return -1; + goto cleanup; =20 if (!(secinfo->s.aes.alias =3D qemuDomainGetSecretAESAlias(srcalias, i= sLuks))) - return -1; + goto cleanup; =20 /* Create a random initialization vector */ if (!(raw_iv =3D virCryptoGenerateRandom(ivlen))) - return -1; + goto cleanup; =20 /* Encode the IV and save that since qemu will need it */ if (!(secinfo->s.aes.iv =3D virStringEncodeBase64(raw_iv, ivlen))) @@ -1250,13 +1262,12 @@ qemuDomainSecretAESSetup(virConnectPtr conn, VIR_DISPOSE_N(raw_iv, ivlen); VIR_DISPOSE_N(secret, secretlen); VIR_DISPOSE_N(ciphertext, ciphertextlen); - + virObjectUnref(conn); return ret; } =20 =20 /* qemuDomainSecretSetup: - * @conn: Pointer to connection * @priv: pointer to domain private object * @secinfo: Pointer to secret info * @srcalias: Alias of the disk/hostdev used to generate the secret alias @@ -1273,8 +1284,7 @@ qemuDomainSecretAESSetup(virConnectPtr conn, * Returns 0 on success, -1 on failure */ static int -qemuDomainSecretSetup(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretSetup(qemuDomainObjPrivatePtr priv, qemuDomainSecretInfoPtr secinfo, const char *srcalias, virSecretUsageType usageType, @@ -1291,12 +1301,12 @@ qemuDomainSecretSetup(virConnectPtr conn, (usageType =3D=3D VIR_SECRET_USAGE_TYPE_ISCSI && iscsiHasPS) || usageType =3D=3D VIR_SECRET_USAGE_TYPE_VOLUME || usageType =3D=3D VIR_SECRET_USAGE_TYPE_TLS)) { - if (qemuDomainSecretAESSetup(conn, priv, secinfo, srcalias, + if (qemuDomainSecretAESSetup(priv, secinfo, srcalias, usageType, username, seclookupdef, isLuks) < 0) return -1; } else { - if (qemuDomainSecretPlainSetup(conn, secinfo, usageType, + if (qemuDomainSecretPlainSetup(secinfo, usageType, username, seclookupdef) < 0) return -1; } @@ -1305,7 +1315,6 @@ qemuDomainSecretSetup(virConnectPtr conn, =20 =20 /* qemuDomainSecretInfoNew: - * @conn: Pointer to connection * @priv: pointer to domain private object * @srcAlias: Alias base to use for TLS object * @usageType: Secret usage type @@ -1319,8 +1328,7 @@ qemuDomainSecretSetup(virConnectPtr conn, * to eventually free @secinfo. */ static qemuDomainSecretInfoPtr -qemuDomainSecretInfoNew(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretInfoNew(qemuDomainObjPrivatePtr priv, const char *srcAlias, virSecretUsageType usageType, const char *username, @@ -1332,7 +1340,7 @@ qemuDomainSecretInfoNew(virConnectPtr conn, if (VIR_ALLOC(secinfo) < 0) return NULL; =20 - if (qemuDomainSecretSetup(conn, priv, secinfo, srcAlias, usageType, + if (qemuDomainSecretSetup(priv, secinfo, srcAlias, usageType, username, lookupDef, isLuks) < 0) goto error; =20 @@ -1352,7 +1360,6 @@ qemuDomainSecretInfoNew(virConnectPtr conn, =20 /** * qemuDomainSecretInfoTLSNew: - * @conn: Pointer to connection * @priv: pointer to domain private object * @srcAlias: Alias base to use for TLS object * @secretUUID: Provide a secretUUID value to look up/create the secretInfo @@ -1363,8 +1370,7 @@ qemuDomainSecretInfoNew(virConnectPtr conn, * Returns qemuDomainSecretInfoPtr or NULL on error. */ qemuDomainSecretInfoPtr -qemuDomainSecretInfoTLSNew(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretInfoTLSNew(qemuDomainObjPrivatePtr priv, const char *srcAlias, const char *secretUUID) { @@ -1378,7 +1384,7 @@ qemuDomainSecretInfoTLSNew(virConnectPtr conn, } seclookupdef.type =3D VIR_SECRET_LOOKUP_TYPE_UUID; =20 - return qemuDomainSecretInfoNew(conn, priv, srcAlias, + return qemuDomainSecretInfoNew(priv, srcAlias, VIR_SECRET_USAGE_TYPE_TLS, NULL, &seclookupdef, false); } @@ -1440,7 +1446,6 @@ qemuDomainDiskHasEncryptionSecret(virStorageSourcePtr= src) =20 /** * qemuDomainSecretStorageSourcePrepare: - * @conn: connection object - for secret lookup * @priv: domain private object * @src: storage source struct to setup * @authalias: prefix of the alias for secret holding authentication data @@ -1454,8 +1459,7 @@ qemuDomainDiskHasEncryptionSecret(virStorageSourcePtr= src) * Returns 0 on success; -1 on error while reporting an libvirt error. */ static int -qemuDomainSecretStorageSourcePrepare(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretStorageSourcePrepare(qemuDomainObjPrivatePtr priv, virStorageSourcePtr src, const char *authalias, const char *encalias) @@ -1479,7 +1483,7 @@ qemuDomainSecretStorageSourcePrepare(virConnectPtr co= nn, usageType =3D VIR_SECRET_USAGE_TYPE_CEPH; =20 if (!(srcPriv->secinfo =3D - qemuDomainSecretInfoNew(conn, priv, authalias, + qemuDomainSecretInfoNew(priv, authalias, usageType, src->auth->username, &src->auth->seclookupdef, false))) return -1; @@ -1487,7 +1491,7 @@ qemuDomainSecretStorageSourcePrepare(virConnectPtr co= nn, =20 if (hasEnc) { if (!(srcPriv->encinfo =3D - qemuDomainSecretInfoNew(conn, priv, encalias, + qemuDomainSecretInfoNew(priv, encalias, VIR_SECRET_USAGE_TYPE_VOLUME, NULL, &src->encryption->secrets[0]->secloo= kupdef, true))) @@ -1499,7 +1503,6 @@ qemuDomainSecretStorageSourcePrepare(virConnectPtr co= nn, =20 =20 /* qemuDomainSecretDiskPrepare: - * @conn: Pointer to connection * @priv: pointer to domain private object * @disk: Pointer to a disk definition * @@ -1509,11 +1512,10 @@ qemuDomainSecretStorageSourcePrepare(virConnectPtr = conn, */ =20 static int -qemuDomainSecretDiskPrepare(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretDiskPrepare(qemuDomainObjPrivatePtr priv, virDomainDiskDefPtr disk) { - return qemuDomainSecretStorageSourcePrepare(conn, priv, disk->src, + return qemuDomainSecretStorageSourcePrepare(priv, disk->src, disk->info.alias, disk->info.alias); } @@ -1543,7 +1545,6 @@ qemuDomainSecretHostdevDestroy(virDomainHostdevDefPtr= hostdev) =20 =20 /* qemuDomainSecretHostdevPrepare: - * @conn: Pointer to connection * @priv: pointer to domain private object * @hostdev: Pointer to a hostdev definition * @@ -1552,8 +1553,7 @@ qemuDomainSecretHostdevDestroy(virDomainHostdevDefPtr= hostdev) * Returns 0 on success, -1 on failure */ int -qemuDomainSecretHostdevPrepare(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretHostdevPrepare(qemuDomainObjPrivatePtr priv, virDomainHostdevDefPtr hostdev) { if (virHostdevIsSCSIDevice(hostdev)) { @@ -1571,7 +1571,7 @@ qemuDomainSecretHostdevPrepare(virConnectPtr conn, srcPriv =3D QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src); =20 if (!(srcPriv->secinfo =3D - qemuDomainSecretInfoNew(conn, priv, hostdev->info->alias, + qemuDomainSecretInfoNew(priv, hostdev->info->alias, VIR_SECRET_USAGE_TYPE_ISCSI, src->auth->username, &src->auth->seclookupdef, @@ -1603,7 +1603,6 @@ qemuDomainSecretChardevDestroy(virDomainChrSourceDefP= tr dev) =20 =20 /* qemuDomainSecretChardevPrepare: - * @conn: Pointer to connection * @cfg: Pointer to driver config object * @priv: pointer to domain private object * @chrAlias: Alias of the chr device @@ -1615,8 +1614,7 @@ qemuDomainSecretChardevDestroy(virDomainChrSourceDefP= tr dev) * Returns 0 on success, -1 on failure */ int -qemuDomainSecretChardevPrepare(virConnectPtr conn, - virQEMUDriverConfigPtr cfg, +qemuDomainSecretChardevPrepare(virQEMUDriverConfigPtr cfg, qemuDomainObjPrivatePtr priv, const char *chrAlias, virDomainChrSourceDefPtr dev) @@ -1635,7 +1633,7 @@ qemuDomainSecretChardevPrepare(virConnectPtr conn, return -1; =20 chrSourcePriv->secinfo =3D - qemuDomainSecretInfoTLSNew(conn, priv, charAlias, + qemuDomainSecretInfoTLSNew(priv, charAlias, cfg->chardevTLSx509secretUUID); VIR_FREE(charAlias); =20 @@ -1693,7 +1691,6 @@ qemuDomainSecretDestroy(virDomainObjPtr vm) =20 =20 /* qemuDomainSecretPrepare: - * @conn: Pointer to connection * @driver: Pointer to driver object * @vm: Domain object * @@ -1706,8 +1703,7 @@ qemuDomainSecretDestroy(virDomainObjPtr vm) * Returns 0 on success, -1 on failure with error message set */ int -qemuDomainSecretPrepare(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainSecretPrepare(virQEMUDriverPtr driver, virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv =3D vm->privateData; @@ -1718,34 +1714,34 @@ qemuDomainSecretPrepare(virConnectPtr conn, /* disk secrets are prepared when preparing disks */ =20 for (i =3D 0; i < vm->def->nhostdevs; i++) { - if (qemuDomainSecretHostdevPrepare(conn, priv, + if (qemuDomainSecretHostdevPrepare(priv, vm->def->hostdevs[i]) < 0) goto cleanup; } =20 for (i =3D 0; i < vm->def->nserials; i++) { - if (qemuDomainSecretChardevPrepare(conn, cfg, priv, + if (qemuDomainSecretChardevPrepare(cfg, priv, vm->def->serials[i]->info.alias, vm->def->serials[i]->source) < = 0) goto cleanup; } =20 for (i =3D 0; i < vm->def->nparallels; i++) { - if (qemuDomainSecretChardevPrepare(conn, cfg, priv, + if (qemuDomainSecretChardevPrepare(cfg, priv, vm->def->parallels[i]->info.ali= as, vm->def->parallels[i]->source) = < 0) goto cleanup; } =20 for (i =3D 0; i < vm->def->nchannels; i++) { - if (qemuDomainSecretChardevPrepare(conn, cfg, priv, + if (qemuDomainSecretChardevPrepare(cfg, priv, vm->def->channels[i]->info.alia= s, vm->def->channels[i]->source) <= 0) goto cleanup; } =20 for (i =3D 0; i < vm->def->nconsoles; i++) { - if (qemuDomainSecretChardevPrepare(conn, cfg, priv, + if (qemuDomainSecretChardevPrepare(cfg, priv, vm->def->consoles[i]->info.alia= s, vm->def->consoles[i]->source) <= 0) goto cleanup; @@ -1754,21 +1750,21 @@ qemuDomainSecretPrepare(virConnectPtr conn, for (i =3D 0; i < vm->def->nsmartcards; i++) if (vm->def->smartcards[i]->type =3D=3D VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH && - qemuDomainSecretChardevPrepare(conn, cfg, priv, + qemuDomainSecretChardevPrepare(cfg, priv, vm->def->smartcards[i]->info.al= ias, vm->def->smartcards[i]->data.pa= ssthru) < 0) goto cleanup; =20 for (i =3D 0; i < vm->def->nrngs; i++) { if (vm->def->rngs[i]->backend =3D=3D VIR_DOMAIN_RNG_BACKEND_EGD && - qemuDomainSecretChardevPrepare(conn, cfg, priv, + qemuDomainSecretChardevPrepare(cfg, priv, vm->def->rngs[i]->info.alias, vm->def->rngs[i]->source.charde= v) < 0) goto cleanup; } =20 for (i =3D 0; i < vm->def->nredirdevs; i++) { - if (qemuDomainSecretChardevPrepare(conn, cfg, priv, + if (qemuDomainSecretChardevPrepare(cfg, priv, vm->def->redirdevs[i]->info.ali= as, vm->def->redirdevs[i]->source) = < 0) goto cleanup; @@ -11459,15 +11455,14 @@ qemuDomainCheckMigrationCapabilities(virQEMUDrive= rPtr driver, =20 =20 int -qemuDomainPrepareDiskSource(virConnectPtr conn, - virDomainDiskDefPtr disk, +qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk, qemuDomainObjPrivatePtr priv, virQEMUDriverConfigPtr cfg) { if (qemuDomainPrepareDiskSourceTLS(disk->src, cfg) < 0) return -1; =20 - if (qemuDomainSecretDiskPrepare(conn, priv, disk) < 0) + if (qemuDomainSecretDiskPrepare(priv, disk) < 0) return -1; =20 if (disk->src->type =3D=3D VIR_STORAGE_TYPE_NETWORK && diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index f3ec5d8042..6d3e6eb5e3 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -836,37 +836,33 @@ bool qemuDomainDiskHasEncryptionSecret(virStorageSour= cePtr src) ATTRIBUTE_NONNULL(1); =20 qemuDomainSecretInfoPtr -qemuDomainSecretInfoTLSNew(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +qemuDomainSecretInfoTLSNew(qemuDomainObjPrivatePtr priv, const char *srcAlias, const char *secretUUID); =20 void qemuDomainSecretHostdevDestroy(virDomainHostdevDefPtr disk) ATTRIBUTE_NONNULL(1); =20 -int qemuDomainSecretHostdevPrepare(virConnectPtr conn, - qemuDomainObjPrivatePtr priv, +int qemuDomainSecretHostdevPrepare(qemuDomainObjPrivatePtr priv, virDomainHostdevDefPtr hostdev) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 void qemuDomainSecretChardevDestroy(virDomainChrSourceDefPtr dev) ATTRIBUTE_NONNULL(1); =20 -int qemuDomainSecretChardevPrepare(virConnectPtr conn, - virQEMUDriverConfigPtr cfg, +int qemuDomainSecretChardevPrepare(virQEMUDriverConfigPtr cfg, qemuDomainObjPrivatePtr priv, const char *chrAlias, virDomainChrSourceDefPtr dev) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) - ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5); + ATTRIBUTE_NONNULL(4); =20 void qemuDomainSecretDestroy(virDomainObjPtr vm) ATTRIBUTE_NONNULL(1); =20 -int qemuDomainSecretPrepare(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainSecretPrepare(virQEMUDriverPtr driver, virDomainObjPtr vm) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 int qemuDomainDefValidateDiskLunSource(const virStorageSource *src) ATTRIBUTE_NONNULL(1); @@ -1000,8 +996,7 @@ qemuDomainCheckMigrationCapabilities(virQEMUDriverPtr = driver, qemuDomainAsyncJob asyncJob); =20 int -qemuDomainPrepareDiskSource(virConnectPtr conn, - virDomainDiskDefPtr disk, +qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk, qemuDomainObjPrivatePtr priv, virQEMUDriverConfigPtr cfg); =20 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 031bdeb5f6..83ad08bd4f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7635,7 +7635,6 @@ qemuDomainUndefine(virDomainPtr dom) static int qemuDomainAttachDeviceLive(virDomainObjPtr vm, virDomainDeviceDefPtr dev, - virConnectPtr conn, virQEMUDriverPtr driver) { int ret =3D -1; @@ -7644,7 +7643,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm, switch ((virDomainDeviceType) dev->type) { case VIR_DOMAIN_DEVICE_DISK: qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, NULL); - ret =3D qemuDomainAttachDeviceDiskLive(conn, driver, vm, dev); + ret =3D qemuDomainAttachDeviceDiskLive(driver, vm, dev); if (!ret) { alias =3D dev->data.disk->info.alias; dev->data.disk =3D NULL; @@ -7677,7 +7676,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm, =20 case VIR_DOMAIN_DEVICE_HOSTDEV: qemuDomainObjCheckHostdevTaint(driver, vm, dev->data.hostdev, NULL= ); - ret =3D qemuDomainAttachHostDevice(conn, driver, vm, + ret =3D qemuDomainAttachHostDevice(driver, vm, dev->data.hostdev); if (!ret) { alias =3D dev->data.hostdev->info->alias; @@ -7686,7 +7685,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_DEVICE_REDIRDEV: - ret =3D qemuDomainAttachRedirdevDevice(conn, driver, vm, + ret =3D qemuDomainAttachRedirdevDevice(driver, vm, dev->data.redirdev); if (!ret) { alias =3D dev->data.redirdev->info.alias; @@ -7695,7 +7694,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_DEVICE_CHR: - ret =3D qemuDomainAttachChrDevice(conn, driver, vm, + ret =3D qemuDomainAttachChrDevice(driver, vm, dev->data.chr); if (!ret) { alias =3D dev->data.chr->info.alias; @@ -7704,7 +7703,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_DEVICE_RNG: - ret =3D qemuDomainAttachRNGDevice(conn, driver, vm, + ret =3D qemuDomainAttachRNGDevice(driver, vm, dev->data.rng); if (!ret) { alias =3D dev->data.rng->info.alias; @@ -8441,8 +8440,7 @@ qemuDomainUpdateDeviceConfig(virDomainDefPtr vmdef, } =20 static int -qemuDomainAttachDeviceLiveAndConfig(virConnectPtr conn, - virDomainObjPtr vm, +qemuDomainAttachDeviceLiveAndConfig(virDomainObjPtr vm, virQEMUDriverPtr driver, const char *xml, unsigned int flags) @@ -8501,7 +8499,7 @@ qemuDomainAttachDeviceLiveAndConfig(virConnectPtr con= n, if (virDomainDefCompatibleDevice(vm->def, dev_copy) < 0) goto cleanup; =20 - if ((ret =3D qemuDomainAttachDeviceLive(vm, dev_copy, conn, driver= )) < 0) + if ((ret =3D qemuDomainAttachDeviceLive(vm, dev_copy, driver)) < 0) goto cleanup; /* * update domain status forcibly because the domain status may be @@ -8557,7 +8555,7 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom, if (virDomainObjUpdateModificationImpact(vm, &flags) < 0) goto endjob; =20 - if (qemuDomainAttachDeviceLiveAndConfig(dom->conn, vm, driver, xml, fl= ags) < 0) + if (qemuDomainAttachDeviceLiveAndConfig(vm, driver, xml, flags) < 0) goto endjob; =20 ret =3D 0; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index ee8b53b719..3c87d73745 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -354,8 +354,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, * Attaches disk to a VM. This function aggregates common code for all bus= types. * In cases when the VM crashed while adding the disk, -2 is returned. */ static int -qemuDomainAttachDiskGeneric(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainDiskDefPtr disk) { @@ -382,7 +381,7 @@ qemuDomainAttachDiskGeneric(virConnectPtr conn, if (qemuAssignDeviceDiskAlias(vm->def, disk) < 0) goto error; =20 - if (qemuDomainPrepareDiskSource(conn, disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0) goto error; =20 srcPriv =3D QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src); @@ -487,8 +486,7 @@ qemuDomainAttachDiskGeneric(virConnectPtr conn, =20 =20 static int -qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachVirtioDiskDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainDiskDefPtr disk) { @@ -499,7 +497,7 @@ qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, if (qemuDomainEnsureVirtioAddress(&releaseaddr, vm, &dev, disk->dst) <= 0) return -1; =20 - if ((rv =3D qemuDomainAttachDiskGeneric(conn, driver, vm, disk)) < 0) { + if ((rv =3D qemuDomainAttachDiskGeneric(driver, vm, disk)) < 0) { if (rv =3D=3D -1 && releaseaddr) qemuDomainReleaseDeviceAddress(vm, &disk->info, disk->dst); =20 @@ -639,8 +637,7 @@ qemuDomainFindOrCreateSCSIDiskController(virQEMUDriverP= tr driver, =20 =20 static int -qemuDomainAttachSCSIDisk(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachSCSIDisk(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainDiskDefPtr disk) { @@ -666,7 +663,7 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn, return -1; } =20 - if (qemuDomainAttachDiskGeneric(conn, driver, vm, disk) < 0) + if (qemuDomainAttachDiskGeneric(driver, vm, disk) < 0) return -1; =20 return 0; @@ -674,8 +671,7 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn, =20 =20 static int -qemuDomainAttachUSBMassStorageDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachUSBMassStorageDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainDiskDefPtr disk) { @@ -686,7 +682,7 @@ qemuDomainAttachUSBMassStorageDevice(virConnectPtr conn, return -1; } =20 - if (qemuDomainAttachDiskGeneric(conn, driver, vm, disk) < 0) { + if (qemuDomainAttachDiskGeneric(driver, vm, disk) < 0) { virDomainUSBAddressRelease(priv->usbaddrs, &disk->info); return -1; } @@ -696,8 +692,7 @@ qemuDomainAttachUSBMassStorageDevice(virConnectPtr conn, =20 =20 int -qemuDomainAttachDeviceDiskLive(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainDeviceDefPtr dev) { @@ -761,15 +756,15 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn, _("disk device=3D'lun' is not supported for= usb bus")); break; } - ret =3D qemuDomainAttachUSBMassStorageDevice(conn, driver, vm,= disk); + ret =3D qemuDomainAttachUSBMassStorageDevice(driver, vm, disk); break; =20 case VIR_DOMAIN_DISK_BUS_VIRTIO: - ret =3D qemuDomainAttachVirtioDiskDevice(conn, driver, vm, dis= k); + ret =3D qemuDomainAttachVirtioDiskDevice(driver, vm, disk); break; =20 case VIR_DOMAIN_DISK_BUS_SCSI: - ret =3D qemuDomainAttachSCSIDisk(conn, driver, vm, disk); + ret =3D qemuDomainAttachSCSIDisk(driver, vm, disk); break; =20 case VIR_DOMAIN_DISK_BUS_IDE: @@ -954,11 +949,8 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, * as a hostdev (the hostdev code will reach over into the * netdev-specific code as appropriate), then also added to * the nets list (see cleanup:) if successful. - * - * qemuDomainAttachHostDevice uses a connection to resolve - * a SCSI hostdev secret, which is not this case, so pass NULL. */ - ret =3D qemuDomainAttachHostDevice(NULL, driver, vm, + ret =3D qemuDomainAttachHostDevice(driver, vm, virDomainNetGetActualHostdev(net)= ); goto cleanup; break; @@ -1519,8 +1511,7 @@ qemuDomainGetTLSObjects(virQEMUCapsPtr qemuCaps, =20 =20 static int -qemuDomainAddChardevTLSObjects(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAddChardevTLSObjects(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainChrSourceDefPtr dev, char *devAlias, @@ -1545,7 +1536,7 @@ qemuDomainAddChardevTLSObjects(virConnectPtr conn, goto cleanup; } =20 - if (qemuDomainSecretChardevPrepare(conn, cfg, priv, devAlias, dev) < 0) + if (qemuDomainSecretChardevPrepare(cfg, priv, devAlias, dev) < 0) goto cleanup; =20 if ((chrSourcePriv =3D QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev))) @@ -1623,8 +1614,7 @@ qemuDomainDelChardevTLSObjects(virQEMUDriverPtr drive= r, } =20 =20 -int qemuDomainAttachRedirdevDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRedirdevDefPtr redirdev) { @@ -1655,7 +1645,7 @@ int qemuDomainAttachRedirdevDevice(virConnectPtr conn, if (VIR_REALLOC_N(def->redirdevs, def->nredirdevs+1) < 0) goto cleanup; =20 - if (qemuDomainAddChardevTLSObjects(conn, driver, vm, redirdev->source, + if (qemuDomainAddChardevTLSObjects(driver, vm, redirdev->source, redirdev->info.alias, charAlias, &tlsAlias, &secAlias) < 0) goto audit; @@ -1861,8 +1851,7 @@ qemuDomainAttachChrDeviceAssignAddr(virDomainObjPtr v= m, return 0; } =20 -int qemuDomainAttachChrDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainChrDefPtr chr) { @@ -1914,7 +1903,7 @@ int qemuDomainAttachChrDevice(virConnectPtr conn, if (qemuDomainChrPreInsert(vmdef, chr) < 0) goto cleanup; =20 - if (qemuDomainAddChardevTLSObjects(conn, driver, vm, dev, + if (qemuDomainAddChardevTLSObjects(driver, vm, dev, chr->info.alias, charAlias, &tlsAlias, &secAlias) < 0) goto audit; @@ -1969,8 +1958,7 @@ int qemuDomainAttachChrDevice(virConnectPtr conn, =20 =20 int -qemuDomainAttachRNGDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRNGDefPtr rng) { @@ -2024,7 +2012,7 @@ qemuDomainAttachRNGDevice(virConnectPtr conn, goto cleanup; =20 if (rng->backend =3D=3D VIR_DOMAIN_RNG_BACKEND_EGD) { - if (qemuDomainAddChardevTLSObjects(conn, driver, vm, + if (qemuDomainAddChardevTLSObjects(driver, vm, rng->source.chardev, rng->info.alias, charAlias, &tlsAlias, &secAlias) < 0) @@ -2325,8 +2313,7 @@ qemuDomainAttachHostUSBDevice(virQEMUDriverPtr driver, =20 =20 static int -qemuDomainAttachHostSCSIDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) { @@ -2383,7 +2370,7 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn, if (qemuAssignDeviceHostdevAlias(vm->def, &hostdev->info->alias, -1) <= 0) goto cleanup; =20 - if (qemuDomainSecretHostdevPrepare(conn, priv, hostdev) < 0) + if (qemuDomainSecretHostdevPrepare(priv, hostdev) < 0) goto cleanup; =20 if (scsisrc->protocol =3D=3D VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISC= SI) { @@ -2585,8 +2572,7 @@ qemuDomainAttachSCSIVHostDevice(virQEMUDriverPtr driv= er, =20 =20 int -qemuDomainAttachHostDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuDomainAttachHostDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) { @@ -2611,7 +2597,7 @@ qemuDomainAttachHostDevice(virConnectPtr conn, break; =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: - if (qemuDomainAttachHostSCSIDevice(conn, driver, vm, + if (qemuDomainAttachHostSCSIDevice(driver, vm, hostdev) < 0) goto error; break; diff --git a/src/qemu/qemu_hotplug.h b/src/qemu/qemu_hotplug.h index 9a0c057f19..b2f5fa688b 100644 --- a/src/qemu/qemu_hotplug.h +++ b/src/qemu/qemu_hotplug.h @@ -62,19 +62,16 @@ int qemuDomainGetTLSObjects(virQEMUCapsPtr qemuCaps, int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainControllerDefPtr controller); -int qemuDomainAttachDeviceDiskLive(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainDeviceDefPtr dev); int qemuDomainAttachNetDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainNetDefPtr net); -int qemuDomainAttachRedirdevDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRedirdevDefPtr hostdev); -int qemuDomainAttachHostDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachHostDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev); int qemuDomainAttachShmemDevice(virQEMUDriverPtr driver, @@ -140,15 +137,13 @@ int qemuDomainAttachLease(virQEMUDriverPtr driver, int qemuDomainDetachLease(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainLeaseDefPtr lease); -int qemuDomainAttachChrDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainChrDefPtr chr); int qemuDomainDetachChrDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainChrDefPtr chr); -int qemuDomainAttachRNGDevice(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRNGDefPtr rng); int qemuDomainDetachRNGDevice(virQEMUDriverPtr driver, diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 88639c71fc..d202e87fbe 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -128,7 +128,6 @@ qemuMigrationCheckTLSCreds(virQEMUDriverPtr driver, =20 =20 /* qemuMigrationCheckSetupTLS - * @conn: Connection pointer * @driver: pointer to qemu driver * @vm: domain object * @cfg: configuration pointer @@ -144,8 +143,7 @@ qemuMigrationCheckTLSCreds(virQEMUDriverPtr driver, * Returns 0 on success, -1 on error/failure */ static int -qemuMigrationCheckSetupTLS(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuMigrationCheckSetupTLS(virQEMUDriverPtr driver, virQEMUDriverConfigPtr cfg, virDomainObjPtr vm, qemuDomainAsyncJob asyncJob) @@ -171,7 +169,7 @@ qemuMigrationCheckSetupTLS(virConnectPtr conn, /* If there's a secret, then grab/store it now using the connection */ if (cfg->migrateTLSx509secretUUID && !(priv->migSecinfo =3D - qemuDomainSecretInfoTLSNew(conn, priv, QEMU_MIGRATION_TLS_ALIAS_= BASE, + qemuDomainSecretInfoTLSNew(priv, QEMU_MIGRATION_TLS_ALIAS_BASE, cfg->migrateTLSx509secretUUID))) return -1; =20 @@ -2180,7 +2178,7 @@ qemuMigrationBegin(virConnectPtr conn, =20 if (flags & VIR_MIGRATE_TLS) { cfg =3D virQEMUDriverGetConfig(driver); - if (qemuMigrationCheckSetupTLS(conn, driver, cfg, vm, asyncJob) < = 0) + if (qemuMigrationCheckSetupTLS(driver, cfg, vm, asyncJob) < 0) goto endjob; } =20 @@ -2788,7 +2786,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, * set the migration TLS parameters */ if (flags & VIR_MIGRATE_TLS) { cfg =3D virQEMUDriverGetConfig(driver); - if (qemuMigrationCheckSetupTLS(dconn, driver, cfg, vm, + if (qemuMigrationCheckSetupTLS(driver, cfg, vm, QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto stopjob; =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 586d11bba3..27454fb583 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -368,11 +368,11 @@ qemuProcessFindDomainDiskByAlias(virDomainObjPtr vm, } =20 static int -qemuProcessGetVolumeQcowPassphrase(virConnectPtr conn, - virDomainDiskDefPtr disk, +qemuProcessGetVolumeQcowPassphrase(virDomainDiskDefPtr disk, char **secretRet, size_t *secretLen) { + virConnectPtr conn =3D NULL; char *passphrase; unsigned char *data; size_t size; @@ -387,19 +387,8 @@ qemuProcessGetVolumeQcowPassphrase(virConnectPtr conn, } enc =3D disk->src->encryption; =20 - if (!conn) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("cannot find secrets without a connection")= ); + if (!(conn =3D virGetConnectSecret())) goto cleanup; - } - - if (conn->secretDriver =3D=3D NULL || - conn->secretDriver->secretLookupByUUID =3D=3D NULL || - conn->secretDriver->secretGetValue =3D=3D NULL) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("secret storage not supported")); - goto cleanup; - } =20 if (enc->format !=3D VIR_STORAGE_ENCRYPTION_FORMAT_QCOW || enc->nsecrets !=3D 1 || @@ -442,6 +431,7 @@ qemuProcessGetVolumeQcowPassphrase(virConnectPtr conn, ret =3D 0; =20 cleanup: + virObjectUnref(conn); return ret; } =20 @@ -453,7 +443,6 @@ qemuProcessFindVolumeQcowPassphrase(qemuMonitorPtr mon = ATTRIBUTE_UNUSED, size_t *secretLen, void *opaque ATTRIBUTE_UNUSED) { - virConnectPtr conn =3D NULL; virDomainDiskDefPtr disk; int ret =3D -1; =20 @@ -465,11 +454,9 @@ qemuProcessFindVolumeQcowPassphrase(qemuMonitorPtr mon= ATTRIBUTE_UNUSED, goto cleanup; } =20 - conn =3D virGetConnectSecret(); - ret =3D qemuProcessGetVolumeQcowPassphrase(conn, disk, secretRet, secr= etLen); + ret =3D qemuProcessGetVolumeQcowPassphrase(disk, secretRet, secretLen); =20 cleanup: - virObjectUnref(conn); virObjectUnlock(vm); return ret; } @@ -2567,8 +2554,7 @@ qemuProcessResctrlCreate(virQEMUDriverPtr driver, =20 =20 static int -qemuProcessInitPasswords(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessInitPasswords(virQEMUDriverPtr driver, virDomainObjPtr vm, int asyncJob) { @@ -2613,8 +2599,7 @@ qemuProcessInitPasswords(virConnectPtr conn, continue; =20 VIR_FREE(secret); - if (qemuProcessGetVolumeQcowPassphrase(conn, - vm->def->disks[i], + if (qemuProcessGetVolumeQcowPassphrase(vm->def->disks[i], &secret, &secretLen) < 0) goto cleanup; =20 @@ -5589,8 +5574,7 @@ qemuProcessPrepareDomainNUMAPlacement(virDomainObjPtr= vm, =20 =20 static int -qemuProcessPrepareDomainStorage(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessPrepareDomainStorage(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuDomainObjPrivatePtr priv, virQEMUDriverConfigPtr cfg, @@ -5611,7 +5595,7 @@ qemuProcessPrepareDomainStorage(virConnectPtr conn, continue; } =20 - if (qemuDomainPrepareDiskSource(conn, disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0) return -1; } =20 @@ -5722,14 +5706,14 @@ qemuProcessPrepareDomain(virConnectPtr conn, goto cleanup; =20 VIR_DEBUG("Setting up storage"); - if (qemuProcessPrepareDomainStorage(conn, driver, vm, priv, cfg, flags= ) < 0) + if (qemuProcessPrepareDomainStorage(driver, vm, priv, cfg, flags) < 0) goto cleanup; =20 VIR_DEBUG("Prepare chardev source backends for TLS"); qemuDomainPrepareChardevSource(vm->def, cfg); =20 VIR_DEBUG("Add secrets to hostdevs and chardevs"); - if (qemuDomainSecretPrepare(conn, driver, vm) < 0) + if (qemuDomainSecretPrepare(driver, vm) < 0) goto cleanup; =20 for (i =3D 0; i < vm->def->nchannels; i++) { @@ -6180,7 +6164,7 @@ qemuProcessLaunch(virConnectPtr conn, goto cleanup; =20 VIR_DEBUG("Setting any required VM passwords"); - if (qemuProcessInitPasswords(conn, driver, vm, asyncJob) < 0) + if (qemuProcessInitPasswords(driver, vm, asyncJob) < 0) goto cleanup; =20 /* set default link states */ diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c index 63bfe44145..d42f8e12cb 100644 --- a/tests/qemuhotplugtest.c +++ b/tests/qemuhotplugtest.c @@ -120,10 +120,10 @@ testQemuHotplugAttach(virDomainObjPtr vm, /* conn in only used for storage pool and secrets lookup so as long * as we don't use any of them, passing NULL should be safe */ - ret =3D qemuDomainAttachDeviceDiskLive(NULL, &driver, vm, dev); + ret =3D qemuDomainAttachDeviceDiskLive(&driver, vm, dev); break; case VIR_DOMAIN_DEVICE_CHR: - ret =3D qemuDomainAttachChrDevice(NULL, &driver, vm, dev->data.chr= ); + ret =3D qemuDomainAttachChrDevice(&driver, vm, dev->data.chr); break; case VIR_DOMAIN_DEVICE_SHMEM: ret =3D qemuDomainAttachShmemDevice(&driver, vm, dev->data.shmem); --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780173622252.22186353986808; Fri, 16 Feb 2018 03:22:53 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1C878C03677E; Fri, 16 Feb 2018 11:22:52 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D8B9260A9F; Fri, 16 Feb 2018 11:22:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 9A22F4A476; Fri, 16 Feb 2018 11:22:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMWXW012946 for ; Fri, 16 Feb 2018 06:22:32 -0500 Received: by smtp.corp.redhat.com (Postfix) id 9C5002024CA4; Fri, 16 Feb 2018 11:22:32 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id AEFA22024CA2; Fri, 16 Feb 2018 11:22:31 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:18 +0000 Message-Id: <20180216112222.26572-7-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 06/10] qemu: stop passing in virConnectPtr for looking up networks X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 16 Feb 2018 11:22:52 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 When setting up graphics, we sometimes need to resolve networks, requiring the caller to pass in a virConnectPtr, except sometimes they pass in NULL. Use virGetConnectNetwork() to acquire the connection to the network driver when it is needed. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_migration.c | 2 +- src/qemu/qemu_process.c | 38 ++++++++++++++++++-------------------- src/qemu/qemu_process.h | 6 ++---- tests/qemuxml2argvtest.c | 2 +- 5 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 83ad08bd4f..0a72102779 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7222,7 +7222,7 @@ static char *qemuConnectDomainXMLToNative(virConnectP= tr conn, net->script =3D script; } =20 - if (!(cmd =3D qemuProcessCreatePretendCmd(conn, driver, vm, NULL, + if (!(cmd =3D qemuProcessCreatePretendCmd(driver, vm, NULL, qemuCheckFips(), true, VIR_QEMU_PROCESS_START_COLD))) goto cleanup; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index d202e87fbe..312d717617 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2752,7 +2752,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, dataFD[0]))) goto stopjob; =20 - if (qemuProcessPrepareDomain(dconn, driver, vm, startFlags) < 0) + if (qemuProcessPrepareDomain(driver, vm, startFlags) < 0) goto stopjob; =20 if (qemuProcessPrepareHost(driver, vm, startFlags) < 0) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 27454fb583..703d62d3e9 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4327,10 +4327,10 @@ qemuProcessGraphicsAllocatePorts(virQEMUDriverPtr d= river, } =20 static int -qemuProcessGetNetworkAddress(virConnectPtr conn, - const char *netname, +qemuProcessGetNetworkAddress(const char *netname, char **netaddr) { + virConnectPtr conn =3D NULL; int ret =3D -1; virNetworkPtr net; virNetworkDefPtr netdef =3D NULL; @@ -4341,6 +4341,10 @@ qemuProcessGetNetworkAddress(virConnectPtr conn, char *xml =3D NULL; =20 *netaddr =3D NULL; + + if (!(conn =3D virGetConnectNetwork())) + return -1; + net =3D virNetworkLookupByName(conn, netname); if (!net) goto cleanup; @@ -4407,14 +4411,14 @@ qemuProcessGetNetworkAddress(virConnectPtr conn, cleanup: virNetworkDefFree(netdef); virObjectUnref(net); + virObjectUnref(conn); VIR_FREE(xml); return ret; } =20 =20 static int -qemuProcessGraphicsSetupNetworkAddress(virConnectPtr conn, - virDomainGraphicsListenDefPtr glist= en, +qemuProcessGraphicsSetupNetworkAddress(virDomainGraphicsListenDefPtr glist= en, const char *listenAddr) { int rc; @@ -4426,7 +4430,7 @@ qemuProcessGraphicsSetupNetworkAddress(virConnectPtr = conn, return 0; } =20 - rc =3D qemuProcessGetNetworkAddress(conn, glisten->network, &glisten->= address); + rc =3D qemuProcessGetNetworkAddress(glisten->network, &glisten->addres= s); if (rc <=3D -2) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("network-based listen isn't possible, " @@ -4441,8 +4445,7 @@ qemuProcessGraphicsSetupNetworkAddress(virConnectPtr = conn, =20 =20 static int -qemuProcessGraphicsSetupListen(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessGraphicsSetupListen(virQEMUDriverPtr driver, virDomainGraphicsDefPtr graphics, virDomainObjPtr vm) { @@ -4500,8 +4503,7 @@ qemuProcessGraphicsSetupListen(virConnectPtr conn, if (glisten->address || !listenAddr) continue; =20 - if (qemuProcessGraphicsSetupNetworkAddress(conn, - glisten, + if (qemuProcessGraphicsSetupNetworkAddress(glisten, listenAddr) < 0) goto cleanup; break; @@ -4530,8 +4532,7 @@ qemuProcessGraphicsSetupListen(virConnectPtr conn, =20 =20 static int -qemuProcessSetupGraphics(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessSetupGraphics(virQEMUDriverPtr driver, virDomainObjPtr vm, unsigned int flags) { @@ -4543,7 +4544,7 @@ qemuProcessSetupGraphics(virConnectPtr conn, for (i =3D 0; i < vm->def->ngraphics; i++) { graphics =3D vm->def->graphics[i]; =20 - if (qemuProcessGraphicsSetupListen(conn, driver, graphics, vm) < 0) + if (qemuProcessGraphicsSetupListen(driver, graphics, vm) < 0) goto cleanup; } =20 @@ -5625,7 +5626,6 @@ qemuProcessPrepareAllowReboot(virDomainObjPtr vm) =20 /** * qemuProcessPrepareDomain: - * @conn: connection object (for looking up storage volumes) * @driver: qemu driver * @vm: domain object * @flags: qemuProcessStartFlags @@ -5640,8 +5640,7 @@ qemuProcessPrepareAllowReboot(virDomainObjPtr vm) * TODO: move all XML modification from qemuBuildCommandLine into this fun= ction */ int -qemuProcessPrepareDomain(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessPrepareDomain(virQEMUDriverPtr driver, virDomainObjPtr vm, unsigned int flags) { @@ -5698,7 +5697,7 @@ qemuProcessPrepareDomain(virConnectPtr conn, goto cleanup; =20 VIR_DEBUG("Setting graphics devices"); - if (qemuProcessSetupGraphics(conn, driver, vm, flags) < 0) + if (qemuProcessSetupGraphics(driver, vm, flags) < 0) goto cleanup; =20 VIR_DEBUG("Create domain masterKey"); @@ -6329,7 +6328,7 @@ qemuProcessStart(virConnectPtr conn, goto stop; } =20 - if (qemuProcessPrepareDomain(conn, driver, vm, flags) < 0) + if (qemuProcessPrepareDomain(driver, vm, flags) < 0) goto stop; =20 if (qemuProcessPrepareHost(driver, vm, flags) < 0) @@ -6386,8 +6385,7 @@ qemuProcessStart(virConnectPtr conn, =20 =20 virCommandPtr -qemuProcessCreatePretendCmd(virConnectPtr conn, - virQEMUDriverPtr driver, +qemuProcessCreatePretendCmd(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *migrateURI, bool enableFips, @@ -6407,7 +6405,7 @@ qemuProcessCreatePretendCmd(virConnectPtr conn, !!migrateURI, flags) < 0) goto cleanup; =20 - if (qemuProcessPrepareDomain(conn, driver, vm, flags) < 0) + if (qemuProcessPrepareDomain(driver, vm, flags) < 0) goto cleanup; =20 VIR_DEBUG("Building emulator command line"); diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 42f92eb458..1bc1203c18 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -92,8 +92,7 @@ int qemuProcessStart(virConnectPtr conn, virNetDevVPortProfileOp vmop, unsigned int flags); =20 -virCommandPtr qemuProcessCreatePretendCmd(virConnectPtr conn, - virQEMUDriverPtr driver, +virCommandPtr qemuProcessCreatePretendCmd(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *migrateURI, bool enableFips, @@ -107,8 +106,7 @@ int qemuProcessInit(virQEMUDriverPtr driver, bool migration, unsigned int flags); =20 -int qemuProcessPrepareDomain(virConnectPtr conn, - virQEMUDriverPtr driver, +int qemuProcessPrepareDomain(virQEMUDriverPtr driver, virDomainObjPtr vm, unsigned int flags); =20 diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index fa261fc805..8d291000a7 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -498,7 +498,7 @@ testCompareXMLToArgv(const void *data) } } =20 - if (!(cmd =3D qemuProcessCreatePretendCmd(conn, &driver, vm, migrateUR= I, + if (!(cmd =3D qemuProcessCreatePretendCmd(&driver, vm, migrateURI, (flags & FLAG_FIPS), false, VIR_QEMU_PROCESS_START_COLD)))= { if (flags & FLAG_EXPECT_FAILURE) --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780177084760.5252846027147; Fri, 16 Feb 2018 03:22:57 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C2A57550CC; Fri, 16 Feb 2018 11:22:55 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 888FF60C1A; Fri, 16 Feb 2018 11:22:55 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4DD1918033F1; Fri, 16 Feb 2018 11:22:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMXHO012955 for ; Fri, 16 Feb 2018 06:22:33 -0500 Received: by smtp.corp.redhat.com (Postfix) id A08632026E04; Fri, 16 Feb 2018 11:22:33 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id E31FA2024CA1; Fri, 16 Feb 2018 11:22:32 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:19 +0000 Message-Id: <20180216112222.26572-8-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 07/10] qemu: remove virConnectPtr from some more startup code paths X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 16 Feb 2018 11:22:56 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 There's a few places in startup code paths which pass around a virConnectPtr which is no longer required. Specifically, the qemuProcessStart() method now only requires a non-NULL connection if autodestroy is requested. Reviewed-by: John Ferlan Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_driver.c | 39 +++++++-------------------------------- src/qemu/qemu_process.c | 26 ++++++++------------------ src/qemu/qemu_process.h | 2 +- 3 files changed, 16 insertions(+), 51 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0a72102779..95c5043436 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -181,12 +181,6 @@ static virNWFilterCallbackDriver qemuCallbackDriver = =3D { }; =20 =20 -struct qemuAutostartData { - virQEMUDriverPtr driver; - virConnectPtr conn; -}; - - /** * qemuDomObjFromDomain: * @domain: Domain pointer that has to be looked up @@ -254,9 +248,9 @@ static int qemuAutostartDomain(virDomainObjPtr vm, void *opaque) { - struct qemuAutostartData *data =3D opaque; + virQEMUDriverPtr driver =3D opaque; int flags =3D 0; - virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(data->driver); + virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); int ret =3D -1; =20 if (cfg->autoStartBypassCache) @@ -267,7 +261,7 @@ qemuAutostartDomain(virDomainObjPtr vm, virResetLastError(); if (vm->autostart && !virDomainObjIsActive(vm)) { - if (qemuProcessBeginJob(data->driver, vm, + if (qemuProcessBeginJob(driver, vm, VIR_DOMAIN_JOB_OPERATION_START) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to start job on VM '%s': %s"), @@ -275,14 +269,14 @@ qemuAutostartDomain(virDomainObjPtr vm, goto cleanup; } =20 - if (qemuDomainObjStart(data->conn, data->driver, vm, flags, + if (qemuDomainObjStart(NULL, driver, vm, flags, QEMU_ASYNC_JOB_START) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to autostart VM '%s': %s"), vm->def->name, virGetLastErrorMessage()); } =20 - qemuProcessEndJob(data->driver, vm); + qemuProcessEndJob(driver, vm); } =20 ret =3D 0; @@ -296,20 +290,7 @@ qemuAutostartDomain(virDomainObjPtr vm, static void qemuAutostartDomains(virQEMUDriverPtr driver) { - virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); - /* XXX: Figure out a better way todo this. The domain - * startup code needs a connection handle in order - * to lookup the bridge associated with a virtual - * network - */ - virConnectPtr conn =3D virConnectOpen(cfg->uri); - /* Ignoring NULL conn which is mostly harmless here */ - struct qemuAutostartData data =3D { driver, conn }; - - virDomainObjListForEach(driver->domains, qemuAutostartDomain, &data); - - virObjectUnref(conn); - virObjectUnref(cfg); + virDomainObjListForEach(driver->domains, qemuAutostartDomain, driver); } =20 =20 @@ -623,7 +604,6 @@ qemuStateInitialize(bool privileged, void *opaque) { char *driverConf =3D NULL; - virConnectPtr conn =3D NULL; virQEMUDriverConfigPtr cfg; uid_t run_uid =3D -1; gid_t run_gid =3D -1; @@ -933,8 +913,6 @@ qemuStateInitialize(bool privileged, qemuDomainNetsRestart, NULL); =20 - conn =3D virConnectOpen(cfg->uri); - /* Then inactive persistent configs */ if (virDomainObjListLoadAllConfigs(qemu_driver->domains, cfg->configDir, @@ -952,19 +930,16 @@ qemuStateInitialize(bool privileged, qemuDomainManagedSaveLoad, qemu_driver); =20 - qemuProcessReconnectAll(conn, qemu_driver); + qemuProcessReconnectAll(qemu_driver); =20 qemu_driver->workerPool =3D virThreadPoolNew(0, 1, 0, qemuProcessEvent= Handler, qemu_driver); if (!qemu_driver->workerPool) goto error; =20 - virObjectUnref(conn); - virNWFilterRegisterCallbackDriver(&qemuCallbackDriver); return 0; =20 error: - virObjectUnref(conn); VIR_FREE(driverConf); VIR_FREE(hugepagePath); VIR_FREE(memoryBackingPath); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 703d62d3e9..d0bab5d84e 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2749,7 +2749,6 @@ qemuProcessUpdateVideoRamSize(virQEMUDriverPtr driver, =20 =20 struct qemuProcessHookData { - virConnectPtr conn; virDomainObjPtr vm; virQEMUDriverPtr driver; virQEMUDriverConfigPtr cfg; @@ -5937,7 +5936,12 @@ qemuProcessLaunch(virConnectPtr conn, =20 cfg =3D virQEMUDriverGetConfig(driver); =20 - hookData.conn =3D conn; + if ((flags & VIR_QEMU_PROCESS_START_AUTODESTROY) && !conn) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Domain autodestroy requires a connection handle"= )); + return -1; + } + hookData.vm =3D vm; hookData.driver =3D driver; /* We don't increase cfg's reference counter here. */ @@ -7246,7 +7250,6 @@ qemuProcessRefreshCPU(virQEMUDriverPtr driver, =20 =20 struct qemuProcessReconnectData { - virConnectPtr conn; virQEMUDriverPtr driver; virDomainObjPtr obj; }; @@ -7254,10 +7257,6 @@ struct qemuProcessReconnectData { * Open an existing VM's monitor, re-detect VCPU threads * and re-reserve the security labels in use * - * We own the virConnectPtr we are passed here - whoever started - * this thread function has increased the reference counter to it - * so that we now have to close it. - * * This function also inherits a locked and ref'd domain object. * * This function needs to: @@ -7279,7 +7278,6 @@ qemuProcessReconnect(void *opaque) virQEMUDriverPtr driver =3D data->driver; virDomainObjPtr obj =3D data->obj; qemuDomainObjPrivatePtr priv; - virConnectPtr conn =3D data->conn; struct qemuDomainJobObj oldjob; int state; int reason; @@ -7501,7 +7499,6 @@ qemuProcessReconnect(void *opaque) qemuDomainRemoveInactiveJob(driver, obj); } virDomainObjEndAPI(&obj); - virObjectUnref(conn); virObjectUnref(cfg); virObjectUnref(caps); virNWFilterUnlockFilterUpdates(); @@ -7557,12 +7554,6 @@ qemuProcessReconnectHelper(virDomainObjPtr obj, virObjectLock(obj); virObjectRef(obj); =20 - /* Since we close the connection later on, we have to make sure that t= he - * threads we start see a valid connection throughout their lifetime. = We - * simply increase the reference counter here. - */ - virObjectRef(data->conn); - if (virThreadCreate(&thread, false, qemuProcessReconnect, data) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not create thread. QEMU initialization " @@ -7578,7 +7569,6 @@ qemuProcessReconnectHelper(virDomainObjPtr obj, =20 virDomainObjEndAPI(&obj); virNWFilterUnlockFilterUpdates(); - virObjectUnref(data->conn); VIR_FREE(data); return -1; } @@ -7593,8 +7583,8 @@ qemuProcessReconnectHelper(virDomainObjPtr obj, * about. */ void -qemuProcessReconnectAll(virConnectPtr conn, virQEMUDriverPtr driver) +qemuProcessReconnectAll(virQEMUDriverPtr driver) { - struct qemuProcessReconnectData data =3D {.conn =3D conn, .driver =3D = driver}; + struct qemuProcessReconnectData data =3D {.driver =3D driver}; virDomainObjListForEach(driver->domains, qemuProcessReconnectHelper, &= data); } diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 1bc1203c18..2741115673 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -47,7 +47,7 @@ int qemuProcessDestroyMemoryBackingPath(virQEMUDriverPtr = driver, virDomainMemoryDefPtr mem); =20 void qemuProcessAutostartAll(virQEMUDriverPtr driver); -void qemuProcessReconnectAll(virConnectPtr conn, virQEMUDriverPtr driver); +void qemuProcessReconnectAll(virQEMUDriverPtr driver); =20 typedef struct _qemuProcessIncomingDef qemuProcessIncomingDef; typedef qemuProcessIncomingDef *qemuProcessIncomingDefPtr; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780180388155.71134387577217; Fri, 16 Feb 2018 03:23:00 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2FEFA81DFE; Fri, 16 Feb 2018 11:22:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9F2EE60BEC; Fri, 16 Feb 2018 11:22:58 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 669454A47A; Fri, 16 Feb 2018 11:22:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMYGQ012965 for ; Fri, 16 Feb 2018 06:22:35 -0500 Received: by smtp.corp.redhat.com (Postfix) id D92692024CA7; Fri, 16 Feb 2018 11:22:34 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id E93572024CA1; Fri, 16 Feb 2018 11:22:33 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:20 +0000 Message-Id: <20180216112222.26572-9-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 08/10] qemu: remove virConnectPtr in some migration methods X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 16 Feb 2018 11:22:59 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 The qemuMigrationPrecreateStorage method needs a connection to access the storage driver. Instead of passing it around, open it at time of use. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_driver.c | 16 +++++++-------- src/qemu/qemu_migration.c | 51 ++++++++++++++++++++++---------------------= ---- src/qemu/qemu_migration.h | 4 +--- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 95c5043436..ce25e7a088 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12115,7 +12115,7 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn, if (virDomainMigratePrepareTunnelEnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareTunnel(driver, dconn, + ret =3D qemuMigrationPrepareTunnel(driver, NULL, 0, NULL, NULL, /* No cookies in= v2 */ st, &def, origname, flags); =20 @@ -12178,7 +12178,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, * length was not sufficiently large, causing failures * migrating between old & new libvirtd */ - ret =3D qemuMigrationPrepareDirect(driver, dconn, + ret =3D qemuMigrationPrepareDirect(driver, NULL, 0, NULL, NULL, /* No cookies */ uri_in, uri_out, &def, origname, NULL, 0, NULL, 0, @@ -12416,7 +12416,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn, if (virDomainMigratePrepare3EnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareDirect(driver, dconn, + ret =3D qemuMigrationPrepareDirect(driver, cookiein, cookieinlen, cookieout, cookieoutlen, uri_in, uri_out, @@ -12502,7 +12502,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, if (virDomainMigratePrepare3ParamsEnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareDirect(driver, dconn, + ret =3D qemuMigrationPrepareDirect(driver, cookiein, cookieinlen, cookieout, cookieoutlen, uri_in, uri_out, @@ -12551,7 +12551,7 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn, if (virDomainMigratePrepareTunnel3EnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareTunnel(driver, dconn, + ret =3D qemuMigrationPrepareTunnel(driver, cookiein, cookieinlen, cookieout, cookieoutlen, st, &def, origname, flags); @@ -12604,7 +12604,7 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr= dconn, if (virDomainMigratePrepareTunnel3ParamsEnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareTunnel(driver, dconn, + ret =3D qemuMigrationPrepareTunnel(driver, cookiein, cookieinlen, cookieout, cookieoutlen, st, &def, origname, flags); @@ -12862,7 +12862,7 @@ qemuDomainMigrateConfirm3(virDomainPtr domain, return -1; } =20 - return qemuMigrationConfirm(domain->conn, vm, cookiein, cookieinlen, + return qemuMigrationConfirm(domain->conn->privateData, vm, cookiein, c= ookieinlen, flags, cancelled); } =20 @@ -12890,7 +12890,7 @@ qemuDomainMigrateConfirm3Params(virDomainPtr domain, return -1; } =20 - return qemuMigrationConfirm(domain->conn, vm, cookiein, cookieinlen, + return qemuMigrationConfirm(domain->conn->privateData, vm, cookiein, c= ookieinlen, flags, cancelled); } =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 312d717617..6edadac719 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -246,9 +246,8 @@ qemuMigrationStoreDomainState(virDomainObjPtr vm) =20 /* Returns true if the domain was resumed, false otherwise */ static bool -qemuMigrationRestoreDomainState(virConnectPtr conn, virDomainObjPtr vm) +qemuMigrationRestoreDomainState(virQEMUDriverPtr driver, virDomainObjPtr v= m) { - virQEMUDriverPtr driver =3D conn->privateData; qemuDomainObjPrivatePtr priv =3D vm->privateData; int reason; virDomainState state =3D virDomainObjGetState(vm, &reason); @@ -417,9 +416,7 @@ qemuMigrateDisk(virDomainDiskDef const *disk, =20 =20 static int -qemuMigrationPrecreateStorage(virConnectPtr conn, - virQEMUDriverPtr driver ATTRIBUTE_UNUSED, - virDomainObjPtr vm, +qemuMigrationPrecreateStorage(virDomainObjPtr vm, qemuMigrationCookieNBDPtr nbd, size_t nmigrate_disks, const char **migrate_disks, @@ -427,10 +424,14 @@ qemuMigrationPrecreateStorage(virConnectPtr conn, { int ret =3D -1; size_t i =3D 0; + virConnectPtr conn; =20 if (!nbd || !nbd->ndisks) return 0; =20 + if (!(conn =3D virGetConnectStorage())) + return -1; + for (i =3D 0; i < nbd->ndisks; i++) { virDomainDiskDefPtr disk; const char *diskSrcPath; @@ -469,6 +470,7 @@ qemuMigrationPrecreateStorage(virConnectPtr conn, =20 ret =3D 0; cleanup: + virObjectUnref(conn); return ret; } =20 @@ -2548,7 +2550,6 @@ qemuMigrationResetTLS(virQEMUDriverPtr driver, =20 static int qemuMigrationPrepareAny(virQEMUDriverPtr driver, - virConnectPtr dconn, const char *cookiein, int cookieinlen, char **cookieout, @@ -2716,7 +2717,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, goto cleanup; } =20 - if (qemuMigrationPrecreateStorage(dconn, driver, vm, mig->nbd, + if (qemuMigrationPrecreateStorage(vm, mig->nbd, nmigrate_disks, migrate_disks, !!(flags & VIR_MIGRATE_NON_SHARED_IN= C)) < 0) goto cleanup; @@ -2758,7 +2759,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, if (qemuProcessPrepareHost(driver, vm, startFlags) < 0) goto stopjob; =20 - rv =3D qemuProcessLaunch(dconn, driver, vm, QEMU_ASYNC_JOB_MIGRATION_I= N, + rv =3D qemuProcessLaunch(NULL, driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, incoming, NULL, VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_START, startFlags); @@ -2942,7 +2943,6 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, */ int qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, - virConnectPtr dconn, const char *cookiein, int cookieinlen, char **cookieout, @@ -2955,10 +2955,10 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, qemuMigrationCompressionPtr compression =3D NULL; int ret; =20 - VIR_DEBUG("driver=3D%p, dconn=3D%p, cookiein=3D%s, cookieinlen=3D%d, " + VIR_DEBUG("driver=3D%p, cookiein=3D%s, cookieinlen=3D%d, " "cookieout=3D%p, cookieoutlen=3D%p, st=3D%p, def=3D%p, " "origname=3D%s, flags=3D0x%lx", - driver, dconn, NULLSTR(cookiein), cookieinlen, + driver, NULLSTR(cookiein), cookieinlen, cookieout, cookieoutlen, st, *def, origname, flags); =20 if (st =3D=3D NULL) { @@ -2970,7 +2970,7 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) return -1; =20 - ret =3D qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen, + ret =3D qemuMigrationPrepareAny(driver, cookiein, cookieinlen, cookieout, cookieoutlen, def, origname, st, NULL, 0, false, NULL, 0, NULL, 0, compression, flags); @@ -3004,7 +3004,6 @@ qemuMigrationParseURI(const char *uri, bool *wellForm= ed) =20 int qemuMigrationPrepareDirect(virQEMUDriverPtr driver, - virConnectPtr dconn, const char *cookiein, int cookieinlen, char **cookieout, @@ -3028,11 +3027,11 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver, virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); const char *migrateHost =3D cfg->migrateHost; =20 - VIR_DEBUG("driver=3D%p, dconn=3D%p, cookiein=3D%s, cookieinlen=3D%d, " + VIR_DEBUG("driver=3D%p, cookiein=3D%s, cookieinlen=3D%d, " "cookieout=3D%p, cookieoutlen=3D%p, uri_in=3D%s, uri_out=3D%= p, " "def=3D%p, origname=3D%s, listenAddress=3D%s, " "nmigrate_disks=3D%zu, migrate_disks=3D%p, nbdPort=3D%d, fla= gs=3D0x%lx", - driver, dconn, NULLSTR(cookiein), cookieinlen, + driver, NULLSTR(cookiein), cookieinlen, cookieout, cookieoutlen, NULLSTR(uri_in), uri_out, *def, origname, NULLSTR(listenAddress), nmigrate_disks, migrate_disks, nbdPort, flags); @@ -3136,7 +3135,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver, if (*uri_out) VIR_DEBUG("Generated uri_out=3D%s", *uri_out); =20 - ret =3D qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen, + ret =3D qemuMigrationPrepareAny(driver, cookiein, cookieinlen, cookieout, cookieoutlen, def, origname, NULL, uri ? uri->scheme : "tcp", port, autoPort, listenAddress, @@ -3199,7 +3198,6 @@ qemuMigrationPrepareDef(virQEMUDriverPtr driver, =20 static int qemuMigrationConfirmPhase(virQEMUDriverPtr driver, - virConnectPtr conn, virDomainObjPtr vm, const char *cookiein, int cookieinlen, @@ -3213,9 +3211,9 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv =3D vm->privateData; qemuDomainJobInfoPtr jobInfo =3D NULL; =20 - VIR_DEBUG("driver=3D%p, conn=3D%p, vm=3D%p, cookiein=3D%s, cookieinlen= =3D%d, " + VIR_DEBUG("driver=3D%p, vm=3D%p, cookiein=3D%s, cookieinlen=3D%d, " "flags=3D0x%x, retcode=3D%d", - driver, conn, vm, NULLSTR(cookiein), cookieinlen, + driver, vm, NULLSTR(cookiein), cookieinlen, flags, retcode); =20 virCheckFlags(QEMU_MIGRATION_FLAGS, -1); @@ -3290,7 +3288,7 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) { qemuMigrationPostcopyFailed(driver, vm); - } else if (qemuMigrationRestoreDomainState(conn, vm)) { + } else if (qemuMigrationRestoreDomainState(driver, vm)) { event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RES= UMED, VIR_DOMAIN_EVENT_RES= UMED_MIGRATED); @@ -3313,14 +3311,13 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, } =20 int -qemuMigrationConfirm(virConnectPtr conn, +qemuMigrationConfirm(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *cookiein, int cookieinlen, unsigned int flags, int cancelled) { - virQEMUDriverPtr driver =3D conn->privateData; qemuMigrationJobPhase phase; virQEMUDriverConfigPtr cfg =3D NULL; int ret =3D -1; @@ -3339,7 +3336,7 @@ qemuMigrationConfirm(virConnectPtr conn, virCloseCallbacksUnset(driver->closeCallbacks, vm, qemuMigrationCleanup); =20 - ret =3D qemuMigrationConfirmPhase(driver, conn, vm, + ret =3D qemuMigrationConfirmPhase(driver, vm, cookiein, cookieinlen, flags, cancelled); =20 @@ -4196,7 +4193,7 @@ static int doTunnelMigrate(virQEMUDriverPtr driver, * instead of client app context & also adding in tunnel * handling */ static int doPeer2PeerMigrate2(virQEMUDriverPtr driver, - virConnectPtr sconn ATTRIBUTE_UNUSED, + virConnectPtr sconn, virConnectPtr dconn, virDomainObjPtr vm, const char *dconnuri, @@ -4654,7 +4651,7 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver, cookieinlen =3D cookieoutlen; cookieout =3D NULL; cookieoutlen =3D 0; - ret =3D qemuMigrationConfirmPhase(driver, sconn, vm, + ret =3D qemuMigrationConfirmPhase(driver, vm, cookiein, cookieinlen, flags, cancelled); /* If Confirm3 returns -1, there's nothing more we can @@ -4962,7 +4959,7 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver, if (!v3proto && ret < 0) qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); =20 - if (qemuMigrationRestoreDomainState(conn, vm)) { + if (qemuMigrationRestoreDomainState(driver, vm)) { event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RESUMED, VIR_DOMAIN_EVENT_RESUMED_MIGRATED= ); @@ -5031,7 +5028,7 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver, nmigrate_disks, migrate_disks, compression, migP= arams); =20 if (ret < 0) { - if (qemuMigrationRestoreDomainState(conn, vm)) { + if (qemuMigrationRestoreDomainState(driver, vm)) { event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RES= UMED, VIR_DOMAIN_EVENT_RES= UMED_MIGRATED); diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index c83febf7bc..328908f6f9 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -188,7 +188,6 @@ qemuMigrationPrepareDef(virQEMUDriverPtr driver, =20 int qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, - virConnectPtr dconn, const char *cookiein, int cookieinlen, char **cookieout, @@ -200,7 +199,6 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, =20 int qemuMigrationPrepareDirect(virQEMUDriverPtr driver, - virConnectPtr dconn, const char *cookiein, int cookieinlen, char **cookieout, @@ -253,7 +251,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, bool v3proto); =20 int -qemuMigrationConfirm(virConnectPtr conn, +qemuMigrationConfirm(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *cookiein, int cookieinlen, --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780176510232.04434141671072; Fri, 16 Feb 2018 03:22:56 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 29812C04BD33; Fri, 16 Feb 2018 11:22:55 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 00F5161F24; Fri, 16 Feb 2018 11:22:54 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id BC72018033EC; Fri, 16 Feb 2018 11:22:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMahS012985 for ; Fri, 16 Feb 2018 06:22:36 -0500 Received: by smtp.corp.redhat.com (Postfix) id 344B02024CA1; Fri, 16 Feb 2018 11:22:36 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 31AE62026DFD; Fri, 16 Feb 2018 11:22:34 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:21 +0000 Message-Id: <20180216112222.26572-10-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 09/10] qemu: don't export migration job APIs X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 16 Feb 2018 11:22:55 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 These APIs are not required anywhere outside the migration code so need not be exported to the rest of the QEMU driver. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_migration.c | 43 +++++++++++++++++++++++++++++++++++++------ src/qemu/qemu_migration.h | 32 -------------------------------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 6edadac719..29247d6a39 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -83,6 +83,37 @@ VIR_ENUM_IMPL(qemuMigrationCompressMethod, QEMU_MIGRATIO= N_COMPRESS_LAST, =20 #define QEMU_MIGRATION_TLS_ALIAS_BASE "libvirt_migrate" =20 +static int +qemuMigrationJobStart(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob job) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; + +static void +qemuMigrationJobSetPhase(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationJobPhase phase) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); + +static void +qemuMigrationJobStartPhase(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationJobPhase phase) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); + +static void +qemuMigrationJobContinue(virDomainObjPtr obj) + ATTRIBUTE_NONNULL(1); + +static bool +qemuMigrationJobIsActive(virDomainObjPtr vm, + qemuDomainAsyncJob job) + ATTRIBUTE_NONNULL(1); + +static void +qemuMigrationJobFinish(virQEMUDriverPtr driver, + virDomainObjPtr obj) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 /* qemuMigrationCheckTLSCreds * @driver: pointer to qemu driver @@ -5745,7 +5776,7 @@ qemuMigrationCancel(virQEMUDriverPtr driver, } =20 =20 -int +static int qemuMigrationJobStart(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuDomainAsyncJob job) @@ -5773,7 +5804,7 @@ qemuMigrationJobStart(virQEMUDriverPtr driver, return 0; } =20 -void +static void qemuMigrationJobSetPhase(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuMigrationJobPhase phase) @@ -5790,7 +5821,7 @@ qemuMigrationJobSetPhase(virQEMUDriverPtr driver, qemuDomainObjSetJobPhase(driver, vm, phase); } =20 -void +static void qemuMigrationJobStartPhase(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuMigrationJobPhase phase) @@ -5798,13 +5829,13 @@ qemuMigrationJobStartPhase(virQEMUDriverPtr driver, qemuMigrationJobSetPhase(driver, vm, phase); } =20 -void +static void qemuMigrationJobContinue(virDomainObjPtr vm) { qemuDomainObjReleaseAsyncJob(vm); } =20 -bool +static bool qemuMigrationJobIsActive(virDomainObjPtr vm, qemuDomainAsyncJob job) { @@ -5824,7 +5855,7 @@ qemuMigrationJobIsActive(virDomainObjPtr vm, return true; } =20 -void +static void qemuMigrationJobFinish(virQEMUDriverPtr driver, virDomainObjPtr vm) { qemuDomainObjEndAsyncJob(driver, vm); diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 328908f6f9..234f1eb858 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -133,38 +133,6 @@ qemuMigrationParams(virTypedParameterPtr params, int nparams, unsigned long flags); =20 -int -qemuMigrationJobStart(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob job) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; - -void -qemuMigrationJobSetPhase(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationJobPhase phase) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); - -void -qemuMigrationJobStartPhase(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationJobPhase phase) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); - -void -qemuMigrationJobContinue(virDomainObjPtr obj) - ATTRIBUTE_NONNULL(1); - -bool -qemuMigrationJobIsActive(virDomainObjPtr vm, - qemuDomainAsyncJob job) - ATTRIBUTE_NONNULL(1); - -void -qemuMigrationJobFinish(virQEMUDriverPtr driver, - virDomainObjPtr obj) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); - int qemuMigrationSetOffline(virQEMUDriverPtr driver, virDomainObjPtr vm); --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 01:25:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518780182000345.20288457666106; Fri, 16 Feb 2018 03:23:02 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4C90CC0587FF; Fri, 16 Feb 2018 11:22:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 222215C261; Fri, 16 Feb 2018 11:22:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E08B418033F5; Fri, 16 Feb 2018 11:22:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1GBMbxh012996 for ; Fri, 16 Feb 2018 06:22:37 -0500 Received: by smtp.corp.redhat.com (Postfix) id A70F22024CA7; Fri, 16 Feb 2018 11:22:37 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6FD982024CA2; Fri, 16 Feb 2018 11:22:36 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 16 Feb 2018 11:22:22 +0000 Message-Id: <20180216112222.26572-11-berrange@redhat.com> In-Reply-To: <20180216112222.26572-1-berrange@redhat.com> References: <20180216112222.26572-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 10/10] qemu: rename migration APIs to include Src or Dst in their name X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 16 Feb 2018 11:23:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 It is very difficult while reading the migration code trying to understand whether a particular function is being called on the src side or the dst side, or either. Putting "Src" or "Dst" in the method names will make this much more obvious. "Any" is used in a few helpers which can be called from both sides. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/qemu/qemu_driver.c | 194 +++--- src/qemu/qemu_migration.c | 1440 +++++++++++++++++++++++------------------= ---- src/qemu/qemu_migration.h | 267 +++++---- src/qemu/qemu_process.c | 20 +- tests/qemuxml2argvtest.c | 4 +- 5 files changed, 972 insertions(+), 953 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index ce25e7a088..69a591d633 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -754,7 +754,7 @@ qemuStateInitialize(bool privileged, if (!(qemu_driver->sharedDevices =3D virHashCreate(30, qemuSharedDevic= eEntryFree))) goto error; =20 - if (qemuMigrationErrorInit(qemu_driver) < 0) + if (qemuMigrationDstErrorInit(qemu_driver) < 0) goto error; =20 if (privileged) { @@ -3282,7 +3282,7 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, goto cleanup; =20 /* Perform the migration */ - if (qemuMigrationToFile(driver, vm, fd, compressedpath, asyncJob) < 0) + if (qemuMigrationSrcToFile(driver, vm, fd, compressedpath, asyncJob) <= 0) goto cleanup; =20 /* Touch up file header to mark image complete. */ @@ -3338,7 +3338,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) goto cleanup; =20 - if (!qemuMigrationIsAllowed(driver, vm, false, 0)) + if (!qemuMigrationSrcIsAllowed(driver, vm, false, 0)) goto cleanup; =20 if (qemuDomainObjBeginAsyncJob(driver, vm, QEMU_ASYNC_JOB_SAVE, @@ -3893,11 +3893,11 @@ doCoreDump(virQEMUDriverPtr driver, goto cleanup; } =20 - if (!qemuMigrationIsAllowed(driver, vm, false, 0)) + if (!qemuMigrationSrcIsAllowed(driver, vm, false, 0)) goto cleanup; =20 - ret =3D qemuMigrationToFile(driver, vm, fd, compressedpath, - QEMU_ASYNC_JOB_DUMP); + ret =3D qemuMigrationSrcToFile(driver, vm, fd, compressedpath, + QEMU_ASYNC_JOB_DUMP); } =20 if (ret < 0) @@ -4815,8 +4815,8 @@ processMonitorEOFEvent(virQEMUDriverPtr driver, =20 if (priv->job.asyncJob =3D=3D QEMU_ASYNC_JOB_MIGRATION_IN) { stopFlags |=3D VIR_QEMU_PROCESS_STOP_MIGRATED; - qemuMigrationErrorSave(driver, vm->def->name, - qemuMonitorLastError(priv->mon)); + qemuMigrationDstErrorSave(driver, vm->def->name, + qemuMonitorLastError(priv->mon)); } =20 event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPP= ED, @@ -12109,15 +12109,15 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dcon= n, goto cleanup; } =20 - if (!(def =3D qemuMigrationPrepareDef(driver, dom_xml, dname, &orignam= e))) + if (!(def =3D qemuMigrationAnyPrepareDef(driver, dom_xml, dname, &orig= name))) goto cleanup; =20 if (virDomainMigratePrepareTunnelEnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareTunnel(driver, - NULL, 0, NULL, NULL, /* No cookies in= v2 */ - st, &def, origname, flags); + ret =3D qemuMigrationDstPrepareTunnel(driver, + NULL, 0, NULL, NULL, /* No cookies= in v2 */ + st, &def, origname, flags); =20 cleanup: VIR_FREE(origname); @@ -12158,7 +12158,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, goto cleanup; } =20 - if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(NULL, 0, flags)= )) goto cleanup; =20 if (virLockManagerPluginUsesState(driver->lockManager)) { @@ -12168,7 +12168,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, goto cleanup; } =20 - if (!(def =3D qemuMigrationPrepareDef(driver, dom_xml, dname, &orignam= e))) + if (!(def =3D qemuMigrationAnyPrepareDef(driver, dom_xml, dname, &orig= name))) goto cleanup; =20 if (virDomainMigratePrepare2EnsureACL(dconn, def) < 0) @@ -12178,11 +12178,11 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, * length was not sufficiently large, causing failures * migrating between old & new libvirtd */ - ret =3D qemuMigrationPrepareDirect(driver, - NULL, 0, NULL, NULL, /* No cookies */ - uri_in, uri_out, - &def, origname, NULL, 0, NULL, 0, - compression, flags); + ret =3D qemuMigrationDstPrepareDirect(driver, + NULL, 0, NULL, NULL, /* No cookies= */ + uri_in, uri_out, + &def, origname, NULL, 0, NULL, 0, + compression, flags); =20 cleanup: VIR_FREE(compression); @@ -12218,7 +12218,7 @@ qemuDomainMigratePerform(virDomainPtr dom, goto cleanup; } =20 - if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(NULL, 0, flags)= )) goto cleanup; =20 if (!(vm =3D qemuDomObjFromDomain(dom))) @@ -12240,11 +12240,11 @@ qemuDomainMigratePerform(virDomainPtr dom, * * Consume any cookie we were able to decode though */ - ret =3D qemuMigrationPerform(driver, dom->conn, vm, NULL, - NULL, dconnuri, uri, NULL, NULL, 0, NULL, 0, - compression, &migParams, cookie, cookielen, - NULL, NULL, /* No output cookies in v2 */ - flags, dname, resource, false); + ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, NULL, + NULL, dconnuri, uri, NULL, NULL, 0, NULL= , 0, + compression, &migParams, cookie, cookiel= en, + NULL, NULL, /* No output cookies in v2 */ + flags, dname, resource, false); =20 cleanup: qemuMigrationParamsClear(&migParams); @@ -12273,7 +12273,7 @@ qemuDomainMigrateFinish2(virConnectPtr dconn, if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, _("no domain with matching name '%s'"), dname); - qemuMigrationErrorReport(driver, dname); + qemuMigrationDstErrorReport(driver, dname); goto cleanup; } =20 @@ -12286,9 +12286,9 @@ qemuDomainMigrateFinish2(virConnectPtr dconn, * length was not sufficiently large, causing failures * migrating between old & new libvirtd */ - dom =3D qemuMigrationFinish(driver, dconn, vm, - NULL, 0, NULL, NULL, /* No cookies */ - flags, retcode, false); + dom =3D qemuMigrationDstFinish(driver, dconn, vm, + NULL, 0, NULL, NULL, /* No cookies */ + flags, retcode, false); =20 cleanup: return dom; @@ -12320,8 +12320,8 @@ qemuDomainMigrateBegin3(virDomainPtr domain, return NULL; } =20 - return qemuMigrationBegin(domain->conn, vm, xmlin, dname, - cookieout, cookieoutlen, 0, NULL, flags); + return qemuMigrationSrcBegin(domain->conn, vm, xmlin, dname, + cookieout, cookieoutlen, 0, NULL, flags); } =20 static char * @@ -12366,9 +12366,9 @@ qemuDomainMigrateBegin3Params(virDomainPtr domain, goto cleanup; } =20 - ret =3D qemuMigrationBegin(domain->conn, vm, xmlin, dname, - cookieout, cookieoutlen, - nmigrate_disks, migrate_disks, flags); + ret =3D qemuMigrationSrcBegin(domain->conn, vm, xmlin, dname, + cookieout, cookieoutlen, + nmigrate_disks, migrate_disks, flags); =20 cleanup: VIR_FREE(migrate_disks); @@ -12407,21 +12407,21 @@ qemuDomainMigratePrepare3(virConnectPtr dconn, goto cleanup; } =20 - if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(NULL, 0, flags)= )) goto cleanup; =20 - if (!(def =3D qemuMigrationPrepareDef(driver, dom_xml, dname, &orignam= e))) + if (!(def =3D qemuMigrationAnyPrepareDef(driver, dom_xml, dname, &orig= name))) goto cleanup; =20 if (virDomainMigratePrepare3EnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareDirect(driver, - cookiein, cookieinlen, - cookieout, cookieoutlen, - uri_in, uri_out, - &def, origname, NULL, 0, NULL, 0, - compression, flags); + ret =3D qemuMigrationDstPrepareDirect(driver, + cookiein, cookieinlen, + cookieout, cookieoutlen, + uri_in, uri_out, + &def, origname, NULL, 0, NULL, 0, + compression, flags); =20 cleanup: VIR_FREE(compression); @@ -12483,7 +12483,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, if (nmigrate_disks < 0) goto cleanup; =20 - if (!(compression =3D qemuMigrationCompressionParse(params, nparams, f= lags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(params, nparams= , flags))) goto cleanup; =20 if (flags & VIR_MIGRATE_TUNNELLED) { @@ -12496,19 +12496,19 @@ qemuDomainMigratePrepare3Params(virConnectPtr dco= nn, goto cleanup; } =20 - if (!(def =3D qemuMigrationPrepareDef(driver, dom_xml, dname, &orignam= e))) + if (!(def =3D qemuMigrationAnyPrepareDef(driver, dom_xml, dname, &orig= name))) goto cleanup; =20 if (virDomainMigratePrepare3ParamsEnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareDirect(driver, - cookiein, cookieinlen, - cookieout, cookieoutlen, - uri_in, uri_out, - &def, origname, listenAddress, - nmigrate_disks, migrate_disks, nbdPor= t, - compression, flags); + ret =3D qemuMigrationDstPrepareDirect(driver, + cookiein, cookieinlen, + cookieout, cookieoutlen, + uri_in, uri_out, + &def, origname, listenAddress, + nmigrate_disks, migrate_disks, nbd= Port, + compression, flags); =20 cleanup: VIR_FREE(compression); @@ -12545,16 +12545,16 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dco= nn, goto cleanup; } =20 - if (!(def =3D qemuMigrationPrepareDef(driver, dom_xml, dname, &orignam= e))) + if (!(def =3D qemuMigrationAnyPrepareDef(driver, dom_xml, dname, &orig= name))) goto cleanup; =20 if (virDomainMigratePrepareTunnel3EnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareTunnel(driver, - cookiein, cookieinlen, - cookieout, cookieoutlen, - st, &def, origname, flags); + ret =3D qemuMigrationDstPrepareTunnel(driver, + cookiein, cookieinlen, + cookieout, cookieoutlen, + st, &def, origname, flags); =20 cleanup: VIR_FREE(origname); @@ -12598,16 +12598,16 @@ qemuDomainMigratePrepareTunnel3Params(virConnectP= tr dconn, goto cleanup; } =20 - if (!(def =3D qemuMigrationPrepareDef(driver, dom_xml, dname, &orignam= e))) + if (!(def =3D qemuMigrationAnyPrepareDef(driver, dom_xml, dname, &orig= name))) goto cleanup; =20 if (virDomainMigratePrepareTunnel3ParamsEnsureACL(dconn, def) < 0) goto cleanup; =20 - ret =3D qemuMigrationPrepareTunnel(driver, - cookiein, cookieinlen, - cookieout, cookieoutlen, - st, &def, origname, flags); + ret =3D qemuMigrationDstPrepareTunnel(driver, + cookiein, cookieinlen, + cookieout, cookieoutlen, + st, &def, origname, flags); =20 cleanup: VIR_FREE(origname); @@ -12637,7 +12637,7 @@ qemuDomainMigratePerform3(virDomainPtr dom, =20 virCheckFlags(QEMU_MIGRATION_FLAGS, -1); =20 - if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(NULL, 0, flags)= )) return -1; =20 if (!(vm =3D qemuDomObjFromDomain(dom))) @@ -12648,12 +12648,12 @@ qemuDomainMigratePerform3(virDomainPtr dom, goto cleanup; } =20 - ret =3D qemuMigrationPerform(driver, dom->conn, vm, xmlin, NULL, - dconnuri, uri, NULL, NULL, 0, NULL, 0, - compression, &migParams, - cookiein, cookieinlen, - cookieout, cookieoutlen, - flags, dname, resource, true); + ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, xmlin, NULL, + dconnuri, uri, NULL, NULL, 0, NULL, 0, + compression, &migParams, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, dname, resource, true); =20 cleanup: qemuMigrationParamsClear(&migParams); @@ -12728,7 +12728,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, if (!(migParams =3D qemuMigrationParams(params, nparams, flags))) goto cleanup; =20 - if (!(compression =3D qemuMigrationCompressionParse(params, nparams, f= lags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(params, nparams= , flags))) goto cleanup; =20 if (!(vm =3D qemuDomObjFromDomain(dom))) @@ -12739,12 +12739,12 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, goto cleanup; } =20 - ret =3D qemuMigrationPerform(driver, dom->conn, vm, dom_xml, persist_x= ml, - dconnuri, uri, graphicsuri, listenAddress, - nmigrate_disks, migrate_disks, nbdPort, - compression, migParams, - cookiein, cookieinlen, cookieout, cookieout= len, - flags, dname, bandwidth, true); + ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, dom_xml, persis= t_xml, + dconnuri, uri, graphicsuri, listenAddres= s, + nmigrate_disks, migrate_disks, nbdPort, + compression, migParams, + cookiein, cookieinlen, cookieout, cookie= outlen, + flags, dname, bandwidth, true); cleanup: VIR_FREE(compression); qemuMigrationParamsFree(&migParams); @@ -12779,7 +12779,7 @@ qemuDomainMigrateFinish3(virConnectPtr dconn, if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, _("no domain with matching name '%s'"), dname); - qemuMigrationErrorReport(driver, dname); + qemuMigrationDstErrorReport(driver, dname); return NULL; } =20 @@ -12788,10 +12788,10 @@ qemuDomainMigrateFinish3(virConnectPtr dconn, return NULL; } =20 - return qemuMigrationFinish(driver, dconn, vm, - cookiein, cookieinlen, - cookieout, cookieoutlen, - flags, cancelled, true); + return qemuMigrationDstFinish(driver, dconn, vm, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, cancelled, true); } =20 static virDomainPtr @@ -12827,7 +12827,7 @@ qemuDomainMigrateFinish3Params(virConnectPtr dconn, if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, _("no domain with matching name '%s'"), dname); - qemuMigrationErrorReport(driver, dname); + qemuMigrationDstErrorReport(driver, dname); return NULL; } =20 @@ -12836,10 +12836,10 @@ qemuDomainMigrateFinish3Params(virConnectPtr dcon= n, return NULL; } =20 - return qemuMigrationFinish(driver, dconn, vm, - cookiein, cookieinlen, - cookieout, cookieoutlen, - flags, cancelled, true); + return qemuMigrationDstFinish(driver, dconn, vm, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, cancelled, true); } =20 =20 @@ -12862,8 +12862,8 @@ qemuDomainMigrateConfirm3(virDomainPtr domain, return -1; } =20 - return qemuMigrationConfirm(domain->conn->privateData, vm, cookiein, c= ookieinlen, - flags, cancelled); + return qemuMigrationSrcConfirm(domain->conn->privateData, vm, cookiein= , cookieinlen, + flags, cancelled); } =20 static int @@ -12890,8 +12890,8 @@ qemuDomainMigrateConfirm3Params(virDomainPtr domain, return -1; } =20 - return qemuMigrationConfirm(domain->conn->privateData, vm, cookiein, c= ookieinlen, - flags, cancelled); + return qemuMigrationSrcConfirm(domain->conn->privateData, vm, cookiein= , cookieinlen, + flags, cancelled); } =20 =20 @@ -13180,14 +13180,14 @@ qemuDomainGetJobInfoMigrationStats(virQEMUDriverP= tr driver, jobInfo->status =3D=3D QEMU_DOMAIN_JOB_STATUS_POSTCOPY) { if (events && jobInfo->status !=3D QEMU_DOMAIN_JOB_STATUS_ACTIVE && - qemuMigrationFetchStats(driver, vm, QEMU_ASYNC_JOB_NONE, - jobInfo, NULL) < 0) + qemuMigrationAnyFetchStats(driver, vm, QEMU_ASYNC_JOB_NONE, + jobInfo, NULL) < 0) return -1; =20 if (jobInfo->status =3D=3D QEMU_DOMAIN_JOB_STATUS_ACTIVE && jobInfo->statsType =3D=3D QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION= && - qemuMigrationFetchMirrorStats(driver, vm, QEMU_ASYNC_JOB_NONE, - jobInfo) < 0) + qemuMigrationSrcFetchMirrorStats(driver, vm, QEMU_ASYNC_JOB_NO= NE, + jobInfo) < 0) return -1; =20 if (qemuDomainJobInfoUpdateTime(jobInfo) < 0) @@ -13582,7 +13582,7 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr d= om, =20 priv =3D vm->privateData; =20 - if (!qemuMigrationCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_XBZRLE)) { + if (!qemuMigrationAnyCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_XBZRLE)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", _("Compressed migration is not supported by " "QEMU binary")); @@ -13633,7 +13633,7 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr d= om, =20 priv =3D vm->privateData; =20 - if (!qemuMigrationCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_XBZRLE)) { + if (!qemuMigrationAnyCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_XBZRLE)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", _("Compressed migration is not supported by " "QEMU binary")); @@ -13985,7 +13985,7 @@ qemuDomainSnapshotCreateActiveInternal(virQEMUDrive= rPtr driver, bool resume =3D false; int ret =3D -1; =20 - if (!qemuMigrationIsAllowed(driver, vm, false, 0)) + if (!qemuMigrationSrcIsAllowed(driver, vm, false, 0)) goto cleanup; =20 if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { @@ -14918,7 +14918,7 @@ qemuDomainSnapshotCreateActiveExternal(virQEMUDrive= rPtr driver, /* do the memory snapshot if necessary */ if (memory) { /* check if migration is possible */ - if (!qemuMigrationIsAllowed(driver, vm, false, 0)) + if (!qemuMigrationSrcIsAllowed(driver, vm, false, 0)) goto cleanup; =20 /* allow the migration job to be cancelled or the domain to be pau= sed */ diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 29247d6a39..7f981f8f2f 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -115,7 +115,7 @@ qemuMigrationJobFinish(virQEMUDriverPtr driver, virDomainObjPtr obj) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 -/* qemuMigrationCheckTLSCreds +/* qemuMigrationAnyCheckTLSCreds * @driver: pointer to qemu driver * @vm: domain object * @asyncJob: migration job to join @@ -129,9 +129,9 @@ qemuMigrationJobFinish(virQEMUDriverPtr driver, * private domain structure. Returns -1 on failure. */ static int -qemuMigrationCheckTLSCreds(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob) +qemuMigrationAnyCheckTLSCreds(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) { int ret =3D -1; qemuDomainObjPrivatePtr priv =3D vm->privateData; @@ -158,7 +158,7 @@ qemuMigrationCheckTLSCreds(virQEMUDriverPtr driver, } =20 =20 -/* qemuMigrationCheckSetupTLS +/* qemuMigrationAnyCheckSetupTLS * @driver: pointer to qemu driver * @vm: domain object * @cfg: configuration pointer @@ -174,10 +174,10 @@ qemuMigrationCheckTLSCreds(virQEMUDriverPtr driver, * Returns 0 on success, -1 on error/failure */ static int -qemuMigrationCheckSetupTLS(virQEMUDriverPtr driver, - virQEMUDriverConfigPtr cfg, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob) +qemuMigrationAnyCheckSetupTLS(virQEMUDriverPtr driver, + virQEMUDriverConfigPtr cfg, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 @@ -187,7 +187,7 @@ qemuMigrationCheckSetupTLS(virQEMUDriverPtr driver, return -1; } =20 - if (qemuMigrationCheckTLSCreds(driver, vm, asyncJob) < 0) + if (qemuMigrationAnyCheckTLSCreds(driver, vm, asyncJob) < 0) return -1; =20 if (!priv->migTLSAlias) { @@ -208,7 +208,7 @@ qemuMigrationCheckSetupTLS(virQEMUDriverPtr driver, } =20 =20 -/* qemuMigrationAddTLSObjects +/* qemuMigrationAnyAddTLSObjects * @driver: pointer to qemu driver * @vm: domain object * @cfg: configuration pointer @@ -223,14 +223,14 @@ qemuMigrationCheckSetupTLS(virQEMUDriverPtr driver, * Returns 0 on success, -1 on failure */ static int -qemuMigrationAddTLSObjects(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virQEMUDriverConfigPtr cfg, - bool tlsListen, - qemuDomainAsyncJob asyncJob, - char **tlsAlias, - char **secAlias, - qemuMonitorMigrationParamsPtr migParams) +qemuMigrationAnyAddTLSObjects(virQEMUDriverPtr driver, + virDomainObjPtr vm, + virQEMUDriverConfigPtr cfg, + bool tlsListen, + qemuDomainAsyncJob asyncJob, + char **tlsAlias, + char **secAlias, + qemuMonitorMigrationParamsPtr migParams) { qemuDomainObjPrivatePtr priv =3D vm->privateData; virJSONValuePtr tlsProps =3D NULL; @@ -266,7 +266,7 @@ qemuMigrationAddTLSObjects(virQEMUDriverPtr driver, =20 =20 static void -qemuMigrationStoreDomainState(virDomainObjPtr vm) +qemuMigrationSrcStoreDomainState(virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv =3D vm->privateData; priv->preMigrationState =3D virDomainObjGetState(vm, NULL); @@ -277,7 +277,7 @@ qemuMigrationStoreDomainState(virDomainObjPtr vm) =20 /* Returns true if the domain was resumed, false otherwise */ static bool -qemuMigrationRestoreDomainState(virQEMUDriverPtr driver, virDomainObjPtr v= m) +qemuMigrationSrcRestoreDomainState(virQEMUDriverPtr driver, virDomainObjPt= r vm) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int reason; @@ -320,9 +320,9 @@ qemuMigrationRestoreDomainState(virQEMUDriverPtr driver= , virDomainObjPtr vm) =20 =20 static int -qemuMigrationPrecreateDisk(virConnectPtr conn, - virDomainDiskDefPtr disk, - unsigned long long capacity) +qemuMigrationDstPrecreateDisk(virConnectPtr conn, + virDomainDiskDefPtr disk, + unsigned long long capacity) { int ret =3D -1; virStoragePoolPtr pool =3D NULL; @@ -447,11 +447,11 @@ qemuMigrateDisk(virDomainDiskDef const *disk, =20 =20 static int -qemuMigrationPrecreateStorage(virDomainObjPtr vm, - qemuMigrationCookieNBDPtr nbd, - size_t nmigrate_disks, - const char **migrate_disks, - bool incremental) +qemuMigrationDstPrecreateStorage(virDomainObjPtr vm, + qemuMigrationCookieNBDPtr nbd, + size_t nmigrate_disks, + const char **migrate_disks, + bool incremental) { int ret =3D -1; size_t i =3D 0; @@ -495,7 +495,7 @@ qemuMigrationPrecreateStorage(virDomainObjPtr vm, =20 VIR_DEBUG("Proceeding with disk source %s", NULLSTR(diskSrcPath)); =20 - if (qemuMigrationPrecreateDisk(conn, disk, nbd->disks[i].capacity)= < 0) + if (qemuMigrationDstPrecreateDisk(conn, disk, nbd->disks[i].capaci= ty) < 0) goto cleanup; } =20 @@ -507,7 +507,7 @@ qemuMigrationPrecreateStorage(virDomainObjPtr vm, =20 =20 /** - * qemuMigrationStartNBDServer: + * qemuMigrationDstStartNBDServer: * @driver: qemu driver * @vm: domain * @@ -519,12 +519,12 @@ qemuMigrationPrecreateStorage(virDomainObjPtr vm, * Returns 0 on success, -1 otherwise. */ static int -qemuMigrationStartNBDServer(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *listenAddr, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort) +qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *listenAddr, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort) { int ret =3D -1; qemuDomainObjPrivatePtr priv =3D vm->privateData; @@ -592,9 +592,9 @@ qemuMigrationStartNBDServer(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationStopNBDServer(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationCookiePtr mig) +qemuMigrationDstStopNBDServer(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationCookiePtr mig) { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 @@ -617,7 +617,7 @@ qemuMigrationStopNBDServer(virQEMUDriverPtr driver, =20 =20 /** - * qemuMigrationDriveMirrorReady: + * qemuMigrationSrcDriveMirrorReady: * @driver: qemu driver * @vm: domain * @@ -630,9 +630,9 @@ qemuMigrationStopNBDServer(virQEMUDriverPtr driver, * -1 on error. */ static int -qemuMigrationDriveMirrorReady(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob) +qemuMigrationSrcDriveMirrorReady(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) { size_t i; size_t notReady =3D 0; @@ -774,11 +774,11 @@ qemuMigrationDriveMirrorCancelled(virQEMUDriverPtr dr= iver, * -1 on error or when job failed and failNoJob is true. */ static int -qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virDomainDiskDefPtr disk, - bool failNoJob, - qemuDomainAsyncJob asyncJob) +qemuMigrationSrcCancelOneDriveMirror(virQEMUDriverPtr driver, + virDomainObjPtr vm, + virDomainDiskDefPtr disk, + bool failNoJob, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; char *diskAlias =3D NULL; @@ -829,7 +829,7 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driv= er, =20 =20 /** - * qemuMigrationCancelDriveMirror: + * qemuMigrationSrcCancelDriveMirror: * @driver: qemu driver * @vm: domain * @check: if true report an error when some of the mirrors fails @@ -841,11 +841,11 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr dr= iver, * Returns 0 on success, -1 otherwise. */ static int -qemuMigrationCancelDriveMirror(virQEMUDriverPtr driver, - virDomainObjPtr vm, - bool check, - qemuDomainAsyncJob asyncJob, - virConnectPtr dconn) +qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver, + virDomainObjPtr vm, + bool check, + qemuDomainAsyncJob asyncJob, + virConnectPtr dconn) { virErrorPtr err =3D NULL; int ret =3D -1; @@ -862,8 +862,8 @@ qemuMigrationCancelDriveMirror(virQEMUDriverPtr driver, if (!diskPriv->migrating) continue; =20 - rv =3D qemuMigrationCancelOneDriveMirror(driver, vm, disk, - check, asyncJob); + rv =3D qemuMigrationSrcCancelOneDriveMirror(driver, vm, disk, + check, asyncJob); if (rv !=3D 0) { if (rv < 0) { if (!err) @@ -922,22 +922,22 @@ qemuMigrationCancelDriveMirror(virQEMUDriverPtr drive= r, * simultaneously to both source and destination. On success, * update @migrate_flags so we don't tell 'migrate' command * to do the very same operation. On failure, the caller is - * expected to call qemuMigrationCancelDriveMirror to stop all + * expected to call qemuMigrationSrcCancelDriveMirror to stop all * running mirrors. * * Returns 0 on success (@migrate_flags updated), * -1 otherwise. */ static int -qemuMigrationDriveMirror(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationCookiePtr mig, - const char *host, - unsigned long speed, - unsigned int *migrate_flags, - size_t nmigrate_disks, - const char **migrate_disks, - virConnectPtr dconn) +qemuMigrationSrcDriveMirror(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationCookiePtr mig, + const char *host, + unsigned long speed, + unsigned int *migrate_flags, + size_t nmigrate_disks, + const char **migrate_disks, + virConnectPtr dconn) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int ret =3D -1; @@ -1013,8 +1013,8 @@ qemuMigrationDriveMirror(virQEMUDriverPtr driver, } } =20 - while ((rv =3D qemuMigrationDriveMirrorReady(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_OU= T)) !=3D 1) { + while ((rv =3D qemuMigrationSrcDriveMirrorReady(driver, vm, + QEMU_ASYNC_JOB_MIGRATION= _OUT)) !=3D 1) { if (rv < 0) goto cleanup; =20 @@ -1036,8 +1036,8 @@ qemuMigrationDriveMirror(virQEMUDriverPtr driver, goto cleanup; } =20 - qemuMigrationFetchMirrorStats(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, - priv->job.current); + qemuMigrationSrcFetchMirrorStats(driver, vm, QEMU_ASYNC_JOB_MIGRATION_= OUT, + priv->job.current); =20 /* Okay, all disks are ready. Modify migrate_flags */ *migrate_flags &=3D ~(QEMU_MONITOR_MIGRATE_NON_SHARED_DISK | @@ -1054,14 +1054,14 @@ qemuMigrationDriveMirror(virQEMUDriverPtr driver, =20 =20 /** - * qemuMigrationIsAllowedHostdev: + * qemuMigrationSrcIsAllowedHostdev: * @def: domain definition * * Checks that @def does not contain any host devices unsupported accross * migrations. Returns true if the vm is allowed to migrate. */ static bool -qemuMigrationIsAllowedHostdev(const virDomainDef *def) +qemuMigrationSrcIsAllowedHostdev(const virDomainDef *def) { size_t i; =20 @@ -1082,7 +1082,7 @@ qemuMigrationIsAllowedHostdev(const virDomainDef *def) =20 =20 /** - * qemuMigrationIsAllowed: + * qemuMigrationSrcIsAllowed: * @driver: qemu driver struct * @vm: domain object * @remote: migration is remote @@ -1096,10 +1096,10 @@ qemuMigrationIsAllowedHostdev(const virDomainDef *d= ef) * false otherwise. */ bool -qemuMigrationIsAllowed(virQEMUDriverPtr driver, - virDomainObjPtr vm, - bool remote, - unsigned int flags) +qemuMigrationSrcIsAllowed(virQEMUDriverPtr driver, + virDomainObjPtr vm, + bool remote, + unsigned int flags) { int nsnapshots; int pauseReason; @@ -1145,7 +1145,7 @@ qemuMigrationIsAllowed(virQEMUDriverPtr driver, return false; } =20 - if (!qemuMigrationIsAllowedHostdev(vm->def)) + if (!qemuMigrationSrcIsAllowedHostdev(vm->def)) return false; =20 if (vm->def->cpu) { @@ -1200,10 +1200,10 @@ qemuMigrationIsAllowed(virQEMUDriverPtr driver, } =20 static bool -qemuMigrationIsSafe(virDomainDefPtr def, - size_t nmigrate_disks, - const char **migrate_disks, - unsigned int flags) +qemuMigrationSrcIsSafe(virDomainDefPtr def, + size_t nmigrate_disks, + const char **migrate_disks, + unsigned int flags) =20 { bool storagemigration =3D flags & (VIR_MIGRATE_NON_SHARED_DISK | @@ -1252,12 +1252,12 @@ qemuMigrationIsSafe(virDomainDefPtr def, return true; } =20 -/** qemuMigrationSetOffline +/** qemuMigrationSrcSetOffline * Pause domain for non-live migration. */ int -qemuMigrationSetOffline(virQEMUDriverPtr driver, - virDomainObjPtr vm) +qemuMigrationSrcSetOffline(virQEMUDriverPtr driver, + virDomainObjPtr vm) { int ret; VIR_DEBUG("driver=3D%p vm=3D%p", driver, vm); @@ -1277,8 +1277,8 @@ qemuMigrationSetOffline(virQEMUDriverPtr driver, =20 =20 void -qemuMigrationPostcopyFailed(virQEMUDriverPtr driver, - virDomainObjPtr vm) +qemuMigrationAnyPostcopyFailed(virQEMUDriverPtr driver, + virDomainObjPtr vm) { virDomainState state; int reason; @@ -1318,16 +1318,16 @@ qemuMigrationPostcopyFailed(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationSetOption(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMonitorMigrationCaps capability, - bool state, - qemuDomainAsyncJob job) +qemuMigrationAnySetOption(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMonitorMigrationCaps capability, + bool state, + qemuDomainAsyncJob job) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int ret; =20 - if (!qemuMigrationCapsGet(vm, capability)) { + if (!qemuMigrationAnyCapsGet(vm, capability)) { if (!state) { /* Unsupported but we want it off anyway */ return 0; @@ -1360,16 +1360,16 @@ qemuMigrationSetOption(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationSetPostCopy(virQEMUDriverPtr driver, - virDomainObjPtr vm, - bool state, - qemuDomainAsyncJob job) +qemuMigrationAnySetPostCopy(virQEMUDriverPtr driver, + virDomainObjPtr vm, + bool state, + qemuDomainAsyncJob job) { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 - if (qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_POSTCOPY, - state, job) < 0) + if (qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_POSTCOPY, + state, job) < 0) return -1; =20 priv->job.postcopyEnabled =3D state; @@ -1437,11 +1437,11 @@ qemuMigrationUpdateJobType(qemuDomainJobInfoPtr job= Info) =20 =20 int -qemuMigrationFetchStats(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - qemuDomainJobInfoPtr jobInfo, - char **error) +qemuMigrationAnyFetchStats(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + qemuDomainJobInfoPtr jobInfo, + char **error) { qemuDomainObjPrivatePtr priv =3D vm->privateData; qemuMonitorMigrationStats stats; @@ -1462,7 +1462,7 @@ qemuMigrationFetchStats(virQEMUDriverPtr driver, =20 =20 static const char * -qemuMigrationJobName(virDomainObjPtr vm) +qemuMigrationAnyJobName(virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 @@ -1480,9 +1480,9 @@ qemuMigrationJobName(virDomainObjPtr vm) =20 =20 static int -qemuMigrationCheckJobStatus(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob) +qemuMigrationAnyCheckJobStatus(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; qemuDomainJobInfoPtr jobInfo =3D priv->job.current; @@ -1492,7 +1492,7 @@ qemuMigrationCheckJobStatus(virQEMUDriverPtr driver, =20 if (!events || jobInfo->stats.mig.status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_ERR= OR) { - if (qemuMigrationFetchStats(driver, vm, asyncJob, jobInfo, &error)= < 0) + if (qemuMigrationAnyFetchStats(driver, vm, asyncJob, jobInfo, &err= or) < 0) return -1; } =20 @@ -1501,18 +1501,18 @@ qemuMigrationCheckJobStatus(virQEMUDriverPtr driver, switch (jobInfo->status) { case QEMU_DOMAIN_JOB_STATUS_NONE: virReportError(VIR_ERR_OPERATION_FAILED, _("%s: %s"), - qemuMigrationJobName(vm), _("is not active")); + qemuMigrationAnyJobName(vm), _("is not active")); goto cleanup; =20 case QEMU_DOMAIN_JOB_STATUS_FAILED: virReportError(VIR_ERR_OPERATION_FAILED, _("%s: %s"), - qemuMigrationJobName(vm), + qemuMigrationAnyJobName(vm), error ? error : _("unexpectedly failed")); goto cleanup; =20 case QEMU_DOMAIN_JOB_STATUS_CANCELED: virReportError(VIR_ERR_OPERATION_ABORTED, _("%s: %s"), - qemuMigrationJobName(vm), _("canceled by client")); + qemuMigrationAnyJobName(vm), _("canceled by client"= )); goto cleanup; =20 case QEMU_DOMAIN_JOB_STATUS_COMPLETED: @@ -1534,6 +1534,7 @@ qemuMigrationCheckJobStatus(virQEMUDriverPtr driver, =20 enum qemuMigrationCompletedFlags { QEMU_MIGRATION_COMPLETED_ABORT_ON_ERROR =3D (1 << 0), + /* This flag should only be set when run on src host */ QEMU_MIGRATION_COMPLETED_CHECK_STORAGE =3D (1 << 1), QEMU_MIGRATION_COMPLETED_POSTCOPY =3D (1 << 2), QEMU_MIGRATION_COMPLETED_PRE_SWITCHOVER =3D (1 << 3), @@ -1547,28 +1548,29 @@ enum qemuMigrationCompletedFlags { * -2 something else failed, we need to cancel migration. */ static int -qemuMigrationCompleted(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - virConnectPtr dconn, - unsigned int flags) +qemuMigrationAnyCompleted(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + virConnectPtr dconn, + unsigned int flags) { qemuDomainObjPrivatePtr priv =3D vm->privateData; qemuDomainJobInfoPtr jobInfo =3D priv->job.current; int pauseReason; =20 - if (qemuMigrationCheckJobStatus(driver, vm, asyncJob) < 0) + if (qemuMigrationAnyCheckJobStatus(driver, vm, asyncJob) < 0) goto error; =20 + /* This flag should only be set when run on src host */ if (flags & QEMU_MIGRATION_COMPLETED_CHECK_STORAGE && - qemuMigrationDriveMirrorReady(driver, vm, asyncJob) < 0) + qemuMigrationSrcDriveMirrorReady(driver, vm, asyncJob) < 0) goto error; =20 if (flags & QEMU_MIGRATION_COMPLETED_ABORT_ON_ERROR && virDomainObjGetState(vm, &pauseReason) =3D=3D VIR_DOMAIN_PAUSED && pauseReason =3D=3D VIR_DOMAIN_PAUSED_IOERROR) { virReportError(VIR_ERR_OPERATION_FAILED, _("%s: %s"), - qemuMigrationJobName(vm), _("failed due to I/O erro= r")); + qemuMigrationAnyJobName(vm), _("failed due to I/O e= rror")); goto error; } =20 @@ -1637,11 +1639,11 @@ qemuMigrationCompleted(virQEMUDriverPtr driver, * QEMU reports failed migration. */ static int -qemuMigrationWaitForCompletion(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - virConnectPtr dconn, - unsigned int flags) +qemuMigrationSrcWaitForCompletion(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + virConnectPtr dconn, + unsigned int flags) { qemuDomainObjPrivatePtr priv =3D vm->privateData; qemuDomainJobInfoPtr jobInfo =3D priv->job.current; @@ -1650,8 +1652,8 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr drive= r, =20 jobInfo->status =3D QEMU_DOMAIN_JOB_STATUS_MIGRATING; =20 - while ((rv =3D qemuMigrationCompleted(driver, vm, asyncJob, - dconn, flags)) !=3D 1) { + while ((rv =3D qemuMigrationAnyCompleted(driver, vm, asyncJob, + dconn, flags)) !=3D 1) { if (rv < 0) return rv; =20 @@ -1671,7 +1673,7 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr drive= r, } =20 if (events) - ignore_value(qemuMigrationFetchStats(driver, vm, asyncJob, jobInfo= , NULL)); + ignore_value(qemuMigrationAnyFetchStats(driver, vm, asyncJob, jobI= nfo, NULL)); =20 qemuDomainJobInfoUpdateTime(jobInfo); qemuDomainJobInfoUpdateDowntime(jobInfo); @@ -1690,10 +1692,10 @@ qemuMigrationWaitForCompletion(virQEMUDriverPtr dri= ver, =20 =20 static int -qemuMigrationWaitForDestCompletion(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - bool postcopy) +qemuMigrationDstWaitForCompletion(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + bool postcopy) { qemuDomainObjPrivatePtr priv =3D vm->privateData; unsigned int flags =3D 0; @@ -1707,8 +1709,8 @@ qemuMigrationWaitForDestCompletion(virQEMUDriverPtr d= river, if (postcopy) flags =3D QEMU_MIGRATION_COMPLETED_POSTCOPY; =20 - while ((rv =3D qemuMigrationCompleted(driver, vm, asyncJob, - NULL, flags)) !=3D 1) { + while ((rv =3D qemuMigrationAnyCompleted(driver, vm, asyncJob, + NULL, flags)) !=3D 1) { if (rv < 0 || virDomainObjWait(vm) < 0) return -1; } @@ -1718,10 +1720,10 @@ qemuMigrationWaitForDestCompletion(virQEMUDriverPtr= driver, =20 =20 static int -qemuDomainMigrateGraphicsRelocate(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationCookiePtr cookie, - const char *graphicsuri) +qemuMigrationSrcGraphicsRelocate(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationCookiePtr cookie, + const char *graphicsuri) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int ret =3D -1; @@ -1817,9 +1819,9 @@ qemuDomainMigrateGraphicsRelocate(virQEMUDriverPtr dr= iver, =20 =20 static int -qemuDomainMigrateOPDRelocate(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, - virDomainObjPtr vm, - qemuMigrationCookiePtr cookie) +qemuMigrationDstOPDRelocate(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, + virDomainObjPtr vm, + qemuMigrationCookiePtr cookie) { virDomainNetDefPtr netptr; int ret =3D -1; @@ -1854,8 +1856,8 @@ qemuDomainMigrateOPDRelocate(virQEMUDriverPtr driver = ATTRIBUTE_UNUSED, =20 =20 int -qemuMigrationCheckIncoming(virQEMUCapsPtr qemuCaps, - const char *migrateFrom) +qemuMigrationDstCheckIncoming(virQEMUCapsPtr qemuCaps, + const char *migrateFrom) { if (STRPREFIX(migrateFrom, "rdma")) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) { @@ -1879,8 +1881,8 @@ qemuMigrationCheckIncoming(virQEMUCapsPtr qemuCaps, =20 =20 char * -qemuMigrationIncomingURI(const char *migrateFrom, - int migrateFd) +qemuMigrationDstIncomingURI(const char *migrateFrom, + int migrateFd) { char *uri =3D NULL; =20 @@ -1894,10 +1896,10 @@ qemuMigrationIncomingURI(const char *migrateFrom, =20 =20 int -qemuMigrationRunIncoming(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *uri, - qemuDomainAsyncJob asyncJob) +qemuMigrationDstRunIncoming(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *uri, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int ret =3D -1; @@ -1914,12 +1916,12 @@ qemuMigrationRunIncoming(virQEMUDriverPtr driver, goto cleanup; =20 if (asyncJob =3D=3D QEMU_ASYNC_JOB_MIGRATION_IN) { - /* qemuMigrationWaitForDestCompletion is called from the Finish ph= ase */ + /* qemuMigrationDstWaitForCompletion is called from the Finish pha= se */ ret =3D 0; goto cleanup; } =20 - if (qemuMigrationWaitForDestCompletion(driver, vm, asyncJob, false) < = 0) + if (qemuMigrationDstWaitForCompletion(driver, vm, asyncJob, false) < 0) goto cleanup; =20 ret =3D 0; @@ -1936,9 +1938,9 @@ qemuMigrationRunIncoming(virQEMUDriverPtr driver, * qemuDomainMigratePerform3 and qemuDomainMigrateConfirm3. */ static virDomainObjPtr -qemuMigrationCleanup(virDomainObjPtr vm, - virConnectPtr conn, - void *opaque) +qemuMigrationSrcCleanup(virDomainObjPtr vm, + virConnectPtr conn, + void *opaque) { virQEMUDriverPtr driver =3D opaque; qemuDomainObjPrivatePtr priv =3D vm->privateData; @@ -1994,15 +1996,15 @@ qemuMigrationCleanup(virDomainObjPtr vm, =20 /* The caller is supposed to lock the vm and start a migration job. */ static char * -qemuMigrationBeginPhase(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *xmlin, - const char *dname, - char **cookieout, - int *cookieoutlen, - size_t nmigrate_disks, - const char **migrate_disks, - unsigned long flags) +qemuMigrationSrcBeginPhase(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *xmlin, + const char *dname, + char **cookieout, + int *cookieoutlen, + size_t nmigrate_disks, + const char **migrate_disks, + unsigned long flags) { char *rv =3D NULL; qemuMigrationCookiePtr mig =3D NULL; @@ -2028,11 +2030,11 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver, if (priv->job.asyncJob =3D=3D QEMU_ASYNC_JOB_MIGRATION_OUT) qemuMigrationJobSetPhase(driver, vm, QEMU_MIGRATION_PHASE_BEGIN3); =20 - if (!qemuMigrationIsAllowed(driver, vm, true, flags)) + if (!qemuMigrationSrcIsAllowed(driver, vm, true, flags)) goto cleanup; =20 if (!(flags & (VIR_MIGRATE_UNSAFE | VIR_MIGRATE_OFFLINE)) && - !qemuMigrationIsSafe(vm->def, nmigrate_disks, migrate_disks, flags= )) + !qemuMigrationSrcIsSafe(vm->def, nmigrate_disks, migrate_disks, fl= ags)) goto cleanup; =20 if (flags & VIR_MIGRATE_POSTCOPY && @@ -2164,15 +2166,15 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver, } =20 char * -qemuMigrationBegin(virConnectPtr conn, - virDomainObjPtr vm, - const char *xmlin, - const char *dname, - char **cookieout, - int *cookieoutlen, - size_t nmigrate_disks, - const char **migrate_disks, - unsigned long flags) +qemuMigrationSrcBegin(virConnectPtr conn, + virDomainObjPtr vm, + const char *xmlin, + const char *dname, + char **cookieout, + int *cookieoutlen, + size_t nmigrate_disks, + const char **migrate_disks, + unsigned long flags) { virQEMUDriverPtr driver =3D conn->privateData; virQEMUDriverConfigPtr cfg =3D NULL; @@ -2189,7 +2191,7 @@ qemuMigrationBegin(virConnectPtr conn, asyncJob =3D QEMU_ASYNC_JOB_NONE; } =20 - qemuMigrationStoreDomainState(vm); + qemuMigrationSrcStoreDomainState(vm); =20 if (!virDomainObjIsActive(vm) && !(flags & VIR_MIGRATE_OFFLINE)) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -2204,14 +2206,14 @@ qemuMigrationBegin(virConnectPtr conn, qemuProcessRefreshDisks(driver, vm, asyncJob) < 0) goto endjob; =20 - if (!(xml =3D qemuMigrationBeginPhase(driver, vm, xmlin, dname, - cookieout, cookieoutlen, - nmigrate_disks, migrate_disks, fla= gs))) + if (!(xml =3D qemuMigrationSrcBeginPhase(driver, vm, xmlin, dname, + cookieout, cookieoutlen, + nmigrate_disks, migrate_disks, = flags))) goto endjob; =20 if (flags & VIR_MIGRATE_TLS) { cfg =3D virQEMUDriverGetConfig(driver); - if (qemuMigrationCheckSetupTLS(driver, cfg, vm, asyncJob) < 0) + if (qemuMigrationAnyCheckSetupTLS(driver, cfg, vm, asyncJob) < 0) goto endjob; } =20 @@ -2221,7 +2223,7 @@ qemuMigrationBegin(virConnectPtr conn, * place. */ if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, - qemuMigrationCleanup) < 0) { + qemuMigrationSrcCleanup) < 0) { VIR_FREE(xml); goto endjob; } @@ -2248,8 +2250,8 @@ qemuMigrationBegin(virConnectPtr conn, */ =20 static void -qemuMigrationPrepareCleanup(virQEMUDriverPtr driver, - virDomainObjPtr vm) +qemuMigrationDstPrepareCleanup(virQEMUDriverPtr driver, + virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 @@ -2268,12 +2270,12 @@ qemuMigrationPrepareCleanup(virQEMUDriverPtr driver, } =20 static qemuProcessIncomingDefPtr -qemuMigrationPrepareIncoming(virDomainObjPtr vm, - bool tunnel, - const char *protocol, - const char *listenAddress, - unsigned short port, - int fd) +qemuMigrationDstPrepareIncoming(virDomainObjPtr vm, + bool tunnel, + const char *protocol, + const char *listenAddress, + unsigned short port, + int fd) { qemuDomainObjPrivatePtr priv =3D vm->privateData; qemuProcessIncomingDefPtr inc =3D NULL; @@ -2348,27 +2350,27 @@ qemuMigrationPrepareIncoming(virDomainObjPtr vm, } =20 static int -qemuMigrationSetCompression(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob job, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams) +qemuMigrationAnySetCompression(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob job, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams) { int ret =3D -1; qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 - if (qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_XBZRLE, - compression->methods & - (1ULL << QEMU_MIGRATION_COMPRESS_XBZRLE= ), - job) < 0) + if (qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_XBZRLE, + compression->methods & + (1ULL << QEMU_MIGRATION_COMPRESS_XBZRLE), + job) < 0) return -1; =20 - if (qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_COMPRESS, - compression->methods & - (1ULL << QEMU_MIGRATION_COMPRESS_MT), - job) < 0) + if (qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_COMPRESS, + compression->methods & + (1ULL << QEMU_MIGRATION_COMPRESS_MT), + job) < 0) return -1; =20 if (qemuDomainObjEnterMonitorAsync(driver, vm, job) < 0) @@ -2420,7 +2422,7 @@ qemuMigrationParamsFree(qemuMonitorMigrationParamsPtr= *migParams) } =20 =20 -/* qemuMigrationSetEmptyTLSParams +/* qemuMigrationAnySetEmptyTLSParams * @driver: pointer to qemu driver * @vm: domain object * @asyncJob: migration job to join @@ -2433,14 +2435,14 @@ qemuMigrationParamsFree(qemuMonitorMigrationParamsP= tr *migParams) * Returns 0 on success, -1 on failure */ static int -qemuMigrationSetEmptyTLSParams(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - qemuMonitorMigrationParamsPtr migParams) +qemuMigrationAnySetEmptyTLSParams(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + qemuMonitorMigrationParamsPtr migParams) { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 - if (qemuMigrationCheckTLSCreds(driver, vm, asyncJob) < 0) + if (qemuMigrationAnyCheckTLSCreds(driver, vm, asyncJob) < 0) return -1; =20 if (!priv->migTLSAlias) @@ -2501,10 +2503,10 @@ qemuMigrationParams(virTypedParameterPtr params, =20 =20 static int -qemuMigrationSetParams(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob job, - qemuMonitorMigrationParamsPtr migParams) +qemuMigrationAnySetParams(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob job, + qemuMonitorMigrationParamsPtr migParams) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int ret =3D -1; @@ -2525,7 +2527,7 @@ qemuMigrationSetParams(virQEMUDriverPtr driver, } =20 =20 -/* qemuMigrationResetTLS +/* qemuMigrationAnyResetTLS * @driver: pointer to qemu driver * @vm: domain object * @asyncJob: migration job to join @@ -2536,9 +2538,9 @@ qemuMigrationSetParams(virQEMUDriverPtr driver, * Returns 0 on success, -1 on failure */ static int -qemuMigrationResetTLS(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob) +qemuMigrationAnyResetTLS(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; char *tlsAlias =3D NULL; @@ -2546,7 +2548,7 @@ qemuMigrationResetTLS(virQEMUDriverPtr driver, qemuMonitorMigrationParams migParams =3D { 0 }; int ret =3D -1; =20 - if (qemuMigrationCheckTLSCreds(driver, vm, asyncJob) < 0) + if (qemuMigrationAnyCheckTLSCreds(driver, vm, asyncJob) < 0) return -1; =20 /* If the tls-creds doesn't exist or if they're set to "" then there's @@ -2565,7 +2567,7 @@ qemuMigrationResetTLS(virQEMUDriverPtr driver, =20 if (VIR_STRDUP(migParams.tlsCreds, "") < 0 || VIR_STRDUP(migParams.tlsHostname, "") < 0 || - qemuMigrationSetParams(driver, vm, asyncJob, &migParams) < 0) + qemuMigrationAnySetParams(driver, vm, asyncJob, &migParams) < 0) goto cleanup; =20 ret =3D 0; @@ -2580,23 +2582,23 @@ qemuMigrationResetTLS(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationPrepareAny(virQEMUDriverPtr driver, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - virDomainDefPtr *def, - const char *origname, - virStreamPtr st, - const char *protocol, - unsigned short port, - bool autoPort, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - unsigned long flags) +qemuMigrationDstPrepareAny(virQEMUDriverPtr driver, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + virDomainDefPtr *def, + const char *origname, + virStreamPtr st, + const char *protocol, + unsigned short port, + bool autoPort, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + unsigned long flags) { virDomainObjPtr vm =3D NULL; virObjectEventPtr event =3D NULL; @@ -2664,7 +2666,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) goto cleanup; =20 - if (!qemuMigrationIsAllowedHostdev(*def)) + if (!qemuMigrationSrcIsAllowedHostdev(*def)) goto cleanup; =20 /* Let migration hook filter domain XML */ @@ -2748,9 +2750,9 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, goto cleanup; } =20 - if (qemuMigrationPrecreateStorage(vm, mig->nbd, - nmigrate_disks, migrate_disks, - !!(flags & VIR_MIGRATE_NON_SHARED_IN= C)) < 0) + if (qemuMigrationDstPrecreateStorage(vm, mig->nbd, + nmigrate_disks, migrate_disks, + !!(flags & VIR_MIGRATE_NON_SHARED= _INC)) < 0) goto cleanup; =20 if (qemuMigrationJobStart(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN) < 0) @@ -2779,9 +2781,9 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, =20 priv->allowReboot =3D mig->allowReboot; =20 - if (!(incoming =3D qemuMigrationPrepareIncoming(vm, tunnel, protocol, - listenAddress, port, - dataFD[0]))) + if (!(incoming =3D qemuMigrationDstPrepareIncoming(vm, tunnel, protoco= l, + listenAddress, port, + dataFD[0]))) goto stopjob; =20 if (qemuProcessPrepareDomain(driver, vm, startFlags) < 0) @@ -2810,21 +2812,21 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, dataFD[1] =3D -1; /* 'st' owns the FD now & will close it */ } =20 - if (qemuMigrationSetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATION_I= N, - compression, &migParams) < 0) + if (qemuMigrationAnySetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATIO= N_IN, + compression, &migParams) < 0) goto stopjob; =20 /* Migrations using TLS need to add the "tls-creds-x509" object and * set the migration TLS parameters */ if (flags & VIR_MIGRATE_TLS) { cfg =3D virQEMUDriverGetConfig(driver); - if (qemuMigrationCheckSetupTLS(driver, cfg, vm, - QEMU_ASYNC_JOB_MIGRATION_IN) < 0) + if (qemuMigrationAnyCheckSetupTLS(driver, cfg, vm, + QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto stopjob; =20 - if (qemuMigrationAddTLSObjects(driver, vm, cfg, true, - QEMU_ASYNC_JOB_MIGRATION_IN, - &tlsAlias, &secAlias, &migParams) <= 0) + if (qemuMigrationAnyAddTLSObjects(driver, vm, cfg, true, + QEMU_ASYNC_JOB_MIGRATION_IN, + &tlsAlias, &secAlias, &migParams= ) < 0) goto stopjob; =20 /* Force reset of 'tls-hostname', it's a source only parameter */ @@ -2832,9 +2834,9 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, goto stopjob; =20 } else { - if (qemuMigrationSetEmptyTLSParams(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_IN, - &migParams) < 0) + if (qemuMigrationAnySetEmptyTLSParams(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_IN, + &migParams) < 0) goto stopjob; } =20 @@ -2843,27 +2845,27 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, goto stopjob; } =20 - if (qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_RDMA_PIN_ALL, - flags & VIR_MIGRATE_RDMA_PIN_ALL, - QEMU_ASYNC_JOB_MIGRATION_IN) < 0) + if (qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_RDMA_PIN_ALL, + flags & VIR_MIGRATE_RDMA_PIN_ALL, + QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto stopjob; =20 - if (qemuMigrationSetPostCopy(driver, vm, - flags & VIR_MIGRATE_POSTCOPY, - QEMU_ASYNC_JOB_MIGRATION_IN) < 0) + if (qemuMigrationAnySetPostCopy(driver, vm, + flags & VIR_MIGRATE_POSTCOPY, + QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto stopjob; =20 - if (qemuMigrationSetParams(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, - &migParams) < 0) + if (qemuMigrationAnySetParams(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, + &migParams) < 0) goto stopjob; =20 if (mig->nbd && flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)= && virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) { - if (qemuMigrationStartNBDServer(driver, vm, incoming->address, - nmigrate_disks, migrate_disks, - nbdPort) < 0) { + if (qemuMigrationDstStartNBDServer(driver, vm, incoming->address, + nmigrate_disks, migrate_disks, + nbdPort) < 0) { goto stopjob; } cookieFlags |=3D QEMU_MIGRATION_COOKIE_NBD; @@ -2879,8 +2881,8 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, } =20 if (incoming->deferredURI && - qemuMigrationRunIncoming(driver, vm, incoming->deferredURI, - QEMU_ASYNC_JOB_MIGRATION_IN) < 0) + qemuMigrationDstRunIncoming(driver, vm, incoming->deferredURI, + QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto stopjob; =20 if (qemuProcessFinishStartup(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, @@ -2897,7 +2899,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, VIR_WARN("Unable to encode migration cookie"); } =20 - if (qemuDomainCleanupAdd(vm, qemuMigrationPrepareCleanup) < 0) + if (qemuDomainCleanupAdd(vm, qemuMigrationDstPrepareCleanup) < 0) goto stopjob; =20 if (!(flags & VIR_MIGRATE_OFFLINE)) { @@ -2952,7 +2954,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, return ret; =20 stopjob: - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN); =20 if (stopProcess) { unsigned int stopFlags =3D VIR_QEMU_PROCESS_STOP_MIGRATED; @@ -2973,15 +2975,15 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, * sets up the corresponding virStream to handle the incoming data. */ int -qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - virStreamPtr st, - virDomainDefPtr *def, - const char *origname, - unsigned long flags) +qemuMigrationDstPrepareTunnel(virQEMUDriverPtr driver, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + virStreamPtr st, + virDomainDefPtr *def, + const char *origname, + unsigned long flags) { qemuMigrationCompressionPtr compression =3D NULL; int ret; @@ -2998,20 +3000,20 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, return -1; } =20 - if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(NULL, 0, flags)= )) return -1; =20 - ret =3D qemuMigrationPrepareAny(driver, cookiein, cookieinlen, - cookieout, cookieoutlen, def, origname, - st, NULL, 0, false, NULL, 0, NULL, 0, - compression, flags); + ret =3D qemuMigrationDstPrepareAny(driver, cookiein, cookieinlen, + cookieout, cookieoutlen, def, orignam= e, + st, NULL, 0, false, NULL, 0, NULL, 0, + compression, flags); VIR_FREE(compression); return ret; } =20 =20 static virURIPtr -qemuMigrationParseURI(const char *uri, bool *wellFormed) +qemuMigrationAnyParseURI(const char *uri, bool *wellFormed) { char *tmp =3D NULL; virURIPtr parsed; @@ -3034,21 +3036,21 @@ qemuMigrationParseURI(const char *uri, bool *wellFo= rmed) =20 =20 int -qemuMigrationPrepareDirect(virQEMUDriverPtr driver, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - const char *uri_in, - char **uri_out, - virDomainDefPtr *def, - const char *origname, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - unsigned long flags) +qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + const char *uri_in, + char **uri_out, + virDomainDefPtr *def, + const char *origname, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + unsigned long flags) { unsigned short port =3D 0; bool autoPort =3D true; @@ -3120,7 +3122,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver, } else { bool well_formed_uri; =20 - if (!(uri =3D qemuMigrationParseURI(uri_in, &well_formed_uri))) + if (!(uri =3D qemuMigrationAnyParseURI(uri_in, &well_formed_uri))) goto cleanup; =20 if (uri->scheme =3D=3D NULL) { @@ -3166,12 +3168,12 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver, if (*uri_out) VIR_DEBUG("Generated uri_out=3D%s", *uri_out); =20 - ret =3D qemuMigrationPrepareAny(driver, cookiein, cookieinlen, - cookieout, cookieoutlen, def, origname, - NULL, uri ? uri->scheme : "tcp", - port, autoPort, listenAddress, - nmigrate_disks, migrate_disks, nbdPort, - compression, flags); + ret =3D qemuMigrationDstPrepareAny(driver, cookiein, cookieinlen, + cookieout, cookieoutlen, def, orignam= e, + NULL, uri ? uri->scheme : "tcp", + port, autoPort, listenAddress, + nmigrate_disks, migrate_disks, nbdPor= t, + compression, flags); cleanup: virURIFree(uri); VIR_FREE(hostname); @@ -3186,10 +3188,10 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver, =20 =20 virDomainDefPtr -qemuMigrationPrepareDef(virQEMUDriverPtr driver, - const char *dom_xml, - const char *dname, - char **origname) +qemuMigrationAnyPrepareDef(virQEMUDriverPtr driver, + const char *dom_xml, + const char *dname, + char **origname) { virCapsPtr caps =3D NULL; virDomainDefPtr def; @@ -3228,12 +3230,12 @@ qemuMigrationPrepareDef(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationConfirmPhase(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *cookiein, - int cookieinlen, - unsigned int flags, - int retcode) +qemuMigrationSrcConfirmPhase(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *cookiein, + int cookieinlen, + unsigned int flags, + int retcode) { qemuMigrationCookiePtr mig; virObjectEventPtr event; @@ -3273,8 +3275,8 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, */ if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY && - qemuMigrationFetchStats(driver, vm, QEMU_ASYNC_JOB_MIGRATION_O= UT, - jobInfo, NULL) < 0) + qemuMigrationAnyFetchStats(driver, vm, QEMU_ASYNC_JOB_MIGRATIO= N_OUT, + jobInfo, NULL) < 0) VIR_WARN("Could not refresh migration statistics"); =20 qemuDomainJobInfoUpdateTime(jobInfo); @@ -3310,23 +3312,23 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, int reason; =20 /* cancel any outstanding NBD jobs */ - qemuMigrationCancelDriveMirror(driver, vm, false, - QEMU_ASYNC_JOB_MIGRATION_OUT, NULL); + qemuMigrationSrcCancelDriveMirror(driver, vm, false, + QEMU_ASYNC_JOB_MIGRATION_OUT, NU= LL); =20 virSetError(orig_err); virFreeError(orig_err); =20 if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) { - qemuMigrationPostcopyFailed(driver, vm); - } else if (qemuMigrationRestoreDomainState(driver, vm)) { + qemuMigrationAnyPostcopyFailed(driver, vm); + } else if (qemuMigrationSrcRestoreDomainState(driver, vm)) { event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RES= UMED, VIR_DOMAIN_EVENT_RES= UMED_MIGRATED); qemuDomainEventQueue(driver, event); } =20 - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); =20 if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver-= >caps) < 0) VIR_WARN("Failed to save status on vm %s", vm->def->name); @@ -3342,12 +3344,12 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, } =20 int -qemuMigrationConfirm(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *cookiein, - int cookieinlen, - unsigned int flags, - int cancelled) +qemuMigrationSrcConfirm(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *cookiein, + int cookieinlen, + unsigned int flags, + int cancelled) { qemuMigrationJobPhase phase; virQEMUDriverConfigPtr cfg =3D NULL; @@ -3365,9 +3367,9 @@ qemuMigrationConfirm(virQEMUDriverPtr driver, =20 qemuMigrationJobStartPhase(driver, vm, phase); virCloseCallbacksUnset(driver->closeCallbacks, vm, - qemuMigrationCleanup); + qemuMigrationSrcCleanup); =20 - ret =3D qemuMigrationConfirmPhase(driver, vm, + ret =3D qemuMigrationSrcConfirmPhase(driver, vm, cookiein, cookieinlen, flags, cancelled); =20 @@ -3434,7 +3436,7 @@ struct _qemuMigrationIOThread { int wakeupSendFD; }; =20 -static void qemuMigrationIOFunc(void *arg) +static void qemuMigrationSrcIOFunc(void *arg) { qemuMigrationIOThreadPtr data =3D arg; char *buffer =3D NULL; @@ -3544,8 +3546,8 @@ static void qemuMigrationIOFunc(void *arg) =20 =20 static qemuMigrationIOThreadPtr -qemuMigrationStartTunnel(virStreamPtr st, - int sock) +qemuMigrationSrcStartTunnel(virStreamPtr st, + int sock) { qemuMigrationIOThreadPtr io =3D NULL; int wakeupFD[2] =3D { -1, -1 }; @@ -3565,7 +3567,7 @@ qemuMigrationStartTunnel(virStreamPtr st, io->wakeupSendFD =3D wakeupFD[1]; =20 if (virThreadCreate(&io->thread, true, - qemuMigrationIOFunc, + qemuMigrationSrcIOFunc, io) < 0) { virReportSystemError(errno, "%s", _("Unable to create migration thread")); @@ -3582,7 +3584,7 @@ qemuMigrationStartTunnel(virStreamPtr st, } =20 static int -qemuMigrationStopTunnel(qemuMigrationIOThreadPtr io, bool error) +qemuMigrationSrcStopTunnel(qemuMigrationIOThreadPtr io, bool error) { int rv =3D -1; char stop =3D error ? 1 : 0; @@ -3616,9 +3618,9 @@ qemuMigrationStopTunnel(qemuMigrationIOThreadPtr io, = bool error) } =20 static int -qemuMigrationConnect(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationSpecPtr spec) +qemuMigrationSrcConnect(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationSpecPtr spec) { virNetSocketPtr sock; const char *host; @@ -3662,10 +3664,10 @@ qemuMigrationConnect(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationContinue(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMonitorMigrationStatus status, - qemuDomainAsyncJob asyncJob) +qemuMigrationSrcContinue(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMonitorMigrationStatus status, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int ret; @@ -3683,22 +3685,22 @@ qemuMigrationContinue(virQEMUDriverPtr driver, =20 =20 static int -qemuMigrationRun(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *persist_xml, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - unsigned long resource, - qemuMigrationSpecPtr spec, - virConnectPtr dconn, - const char *graphicsuri, - size_t nmigrate_disks, - const char **migrate_disks, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams) +qemuMigrationSrcRun(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *persist_xml, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + unsigned long resource, + qemuMigrationSpecPtr spec, + virConnectPtr dconn, + const char *graphicsuri, + size_t nmigrate_disks, + const char **migrate_disks, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams) { int ret =3D -1; unsigned int migrate_flags =3D QEMU_MONITOR_MIGRATE_BACKGROUND; @@ -3753,8 +3755,8 @@ qemuMigrationRun(virQEMUDriverPtr driver, =20 if (flags & VIR_MIGRATE_PERSIST_DEST) { if (persist_xml) { - if (!(persistDef =3D qemuMigrationPrepareDef(driver, persist_x= ml, - NULL, NULL))) + if (!(persistDef =3D qemuMigrationAnyPrepareDef(driver, persis= t_xml, + NULL, NULL))) goto error; } else { virDomainDefPtr def =3D vm->newDef ? vm->newDef : vm->def; @@ -3770,7 +3772,7 @@ qemuMigrationRun(virQEMUDriverPtr driver, if (!mig) goto error; =20 - if (qemuDomainMigrateGraphicsRelocate(driver, vm, mig, graphicsuri) < = 0) + if (qemuMigrationSrcGraphicsRelocate(driver, vm, mig, graphicsuri) < 0) VIR_WARN("unable to provide data for graphics client relocation"); =20 if (flags & VIR_MIGRATE_TLS) { @@ -3778,9 +3780,9 @@ qemuMigrationRun(virQEMUDriverPtr driver, =20 /* Begin/CheckSetupTLS already set up migTLSAlias, the following * assumes that and adds the TLS objects to the domain. */ - if (qemuMigrationAddTLSObjects(driver, vm, cfg, false, - QEMU_ASYNC_JOB_MIGRATION_OUT, - &tlsAlias, &secAlias, migParams) < = 0) + if (qemuMigrationAnyAddTLSObjects(driver, vm, cfg, false, + QEMU_ASYNC_JOB_MIGRATION_OUT, + &tlsAlias, &secAlias, migParams)= < 0) goto error; =20 /* We need to add tls-hostname whenever QEMU itself does not @@ -3795,9 +3797,9 @@ qemuMigrationRun(virQEMUDriverPtr driver, goto error; } } else { - if (qemuMigrationSetEmptyTLSParams(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_OUT, - migParams) < 0) + if (qemuMigrationAnySetEmptyTLSParams(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_OUT, + migParams) < 0) goto error; } =20 @@ -3805,13 +3807,13 @@ qemuMigrationRun(virQEMUDriverPtr driver, QEMU_MONITOR_MIGRATE_NON_SHARED_INC)) { if (mig->nbd) { /* This will update migrate_flags on success */ - if (qemuMigrationDriveMirror(driver, vm, mig, - spec->dest.host.name, - migrate_speed, - &migrate_flags, - nmigrate_disks, - migrate_disks, - dconn) < 0) { + if (qemuMigrationSrcDriveMirror(driver, vm, mig, + spec->dest.host.name, + migrate_speed, + &migrate_flags, + nmigrate_disks, + migrate_disks, + dconn) < 0) { goto error; } } else { @@ -3825,39 +3827,39 @@ qemuMigrationRun(virQEMUDriverPtr driver, /* Before EnterMonitor, since qemuMigrationSetOffline already does tha= t */ if (!(flags & VIR_MIGRATE_LIVE) && virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { - if (qemuMigrationSetOffline(driver, vm) < 0) + if (qemuMigrationSrcSetOffline(driver, vm) < 0) goto error; } =20 - if (qemuMigrationSetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATION_O= UT, - compression, migParams) < 0) + if (qemuMigrationAnySetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATIO= N_OUT, + compression, migParams) < 0) goto error; =20 - if (qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_AUTO_CONVERGE, - flags & VIR_MIGRATE_AUTO_CONVERGE, - QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) + if (qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_AUTO_CONVERG= E, + flags & VIR_MIGRATE_AUTO_CONVERGE, + QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) goto error; =20 - if (qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_RDMA_PIN_ALL, - flags & VIR_MIGRATE_RDMA_PIN_ALL, - QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) + if (qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_RDMA_PIN_ALL, + flags & VIR_MIGRATE_RDMA_PIN_ALL, + QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) goto error; =20 - if (qemuMigrationSetPostCopy(driver, vm, - flags & VIR_MIGRATE_POSTCOPY, - QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) + if (qemuMigrationAnySetPostCopy(driver, vm, + flags & VIR_MIGRATE_POSTCOPY, + QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) goto error; =20 - if (qemuMigrationCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_PAUSE_BEFORE_= SWITCHOVER) && - qemuMigrationSetOption(driver, vm, - QEMU_MONITOR_MIGRATION_CAPS_PAUSE_BEFORE_SW= ITCHOVER, - true, QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) + if (qemuMigrationAnyCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_PAUSE_BEFO= RE_SWITCHOVER) && + qemuMigrationAnySetOption(driver, vm, + QEMU_MONITOR_MIGRATION_CAPS_PAUSE_BEFORE= _SWITCHOVER, + true, QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) goto error; =20 - if (qemuMigrationSetParams(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, - migParams) < 0) + if (qemuMigrationAnySetParams(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, + migParams) < 0) goto error; =20 if (qemuDomainObjEnterMonitorAsync(driver, vm, @@ -3880,7 +3882,7 @@ qemuMigrationRun(virQEMUDriverPtr driver, =20 /* connect to the destination qemu if needed */ if (spec->destType =3D=3D MIGRATION_DEST_CONNECT_HOST && - qemuMigrationConnect(driver, vm, spec) < 0) { + qemuMigrationSrcConnect(driver, vm, spec) < 0) { goto exit_monitor; } =20 @@ -3926,7 +3928,7 @@ qemuMigrationRun(virQEMUDriverPtr driver, cancel =3D true; =20 if (spec->fwdType !=3D MIGRATION_FWD_DIRECT) { - if (!(iothread =3D qemuMigrationStartTunnel(spec->fwd.stream, fd))) + if (!(iothread =3D qemuMigrationSrcStartTunnel(spec->fwd.stream, f= d))) goto error; /* If we've created a tunnel, then the 'fd' will be closed in the * qemuMigrationIOFunc as data->sock. @@ -3942,9 +3944,9 @@ qemuMigrationRun(virQEMUDriverPtr driver, if (flags & VIR_MIGRATE_POSTCOPY) waitFlags |=3D QEMU_MIGRATION_COMPLETED_POSTCOPY; =20 - rc =3D qemuMigrationWaitForCompletion(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_OUT, - dconn, waitFlags); + rc =3D qemuMigrationSrcWaitForCompletion(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_OUT, + dconn, waitFlags); if (rc =3D=3D -2) { goto error; } else if (rc =3D=3D -1) { @@ -3966,14 +3968,14 @@ qemuMigrationRun(virQEMUDriverPtr driver, goto error; } } else if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING && - qemuMigrationSetOffline(driver, vm) < 0) { + qemuMigrationSrcSetOffline(driver, vm) < 0) { goto error; } =20 if (mig && mig->nbd && - qemuMigrationCancelDriveMirror(driver, vm, true, - QEMU_ASYNC_JOB_MIGRATION_OUT, - dconn) < 0) + qemuMigrationSrcCancelDriveMirror(driver, vm, true, + QEMU_ASYNC_JOB_MIGRATION_OUT, + dconn) < 0) goto error; =20 /* When migration was paused before serializing device state we need to @@ -3981,16 +3983,16 @@ qemuMigrationRun(virQEMUDriverPtr driver, * end of the migration. */ if (priv->job.current->status =3D=3D QEMU_DOMAIN_JOB_STATUS_PAUSED) { - if (qemuMigrationContinue(driver, vm, - QEMU_MONITOR_MIGRATION_STATUS_PRE_SWITCH= OVER, - QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) + if (qemuMigrationSrcContinue(driver, vm, + QEMU_MONITOR_MIGRATION_STATUS_PRE_SWI= TCHOVER, + QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) goto error; =20 waitFlags ^=3D QEMU_MIGRATION_COMPLETED_PRE_SWITCHOVER; =20 - rc =3D qemuMigrationWaitForCompletion(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_OUT, - dconn, waitFlags); + rc =3D qemuMigrationSrcWaitForCompletion(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_OU= T, + dconn, waitFlags); if (rc =3D=3D -2) { goto error; } else if (rc =3D=3D -1) { @@ -4004,7 +4006,7 @@ qemuMigrationRun(virQEMUDriverPtr driver, qemuMigrationIOThreadPtr io; =20 VIR_STEAL_PTR(io, iothread); - if (qemuMigrationStopTunnel(io, false) < 0) + if (qemuMigrationSrcStopTunnel(io, false) < 0) goto error; } =20 @@ -4058,12 +4060,12 @@ qemuMigrationRun(virQEMUDriverPtr driver, =20 /* cancel any outstanding NBD jobs */ if (mig && mig->nbd) - qemuMigrationCancelDriveMirror(driver, vm, false, - QEMU_ASYNC_JOB_MIGRATION_OUT, - dconn); + qemuMigrationSrcCancelDriveMirror(driver, vm, false, + QEMU_ASYNC_JOB_MIGRATION_OUT, + dconn); =20 if (iothread) - qemuMigrationStopTunnel(iothread, true); + qemuMigrationSrcStopTunnel(iothread, true); =20 if (priv->job.current->status !=3D QEMU_DOMAIN_JOB_STATUS_CANCELED) priv->job.current->status =3D QEMU_DOMAIN_JOB_STATUS_FAILED; @@ -4078,22 +4080,23 @@ qemuMigrationRun(virQEMUDriverPtr driver, /* Perform migration using QEMU's native migrate support, * not encrypted obviously */ -static int doNativeMigrate(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *persist_xml, - const char *uri, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - unsigned long resource, - virConnectPtr dconn, - const char *graphicsuri, - size_t nmigrate_disks, - const char **migrate_disks, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams) +static int +qemuMigrationSrcPerformNative(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *persist_xml, + const char *uri, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + unsigned long resource, + virConnectPtr dconn, + const char *graphicsuri, + size_t nmigrate_disks, + const char **migrate_disks, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams) { qemuDomainObjPrivatePtr priv =3D vm->privateData; virURIPtr uribits =3D NULL; @@ -4107,7 +4110,7 @@ static int doNativeMigrate(virQEMUDriverPtr driver, cookieout, cookieoutlen, flags, resource, NULLSTR(graphicsuri), nmigrate_disks, migrate_disks); =20 - if (!(uribits =3D qemuMigrationParseURI(uri, NULL))) + if (!(uribits =3D qemuMigrationAnyParseURI(uri, NULL))) return -1; =20 if (uribits->scheme =3D=3D NULL) { @@ -4141,10 +4144,10 @@ static int doNativeMigrate(virQEMUDriverPtr driver, spec.dest.host.port =3D uribits->port; spec.fwdType =3D MIGRATION_FWD_DIRECT; =20 - ret =3D qemuMigrationRun(driver, vm, persist_xml, cookiein, cookieinle= n, cookieout, - cookieoutlen, flags, resource, &spec, dconn, - graphicsuri, nmigrate_disks, migrate_disks, - compression, migParams); + ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookiei= nlen, cookieout, + cookieoutlen, flags, resource, &spec, dconn, + graphicsuri, nmigrate_disks, migrate_disks, + compression, migParams); =20 if (spec.destType =3D=3D MIGRATION_DEST_FD) VIR_FORCE_CLOSE(spec.dest.fd.qemu); @@ -4156,22 +4159,23 @@ static int doNativeMigrate(virQEMUDriverPtr driver, } =20 =20 -static int doTunnelMigrate(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virStreamPtr st, - const char *persist_xml, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - unsigned long resource, - virConnectPtr dconn, - const char *graphicsuri, - size_t nmigrate_disks, - const char **migrate_disks, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams) +static int +qemuMigrationSrcPerformTunnel(virQEMUDriverPtr driver, + virDomainObjPtr vm, + virStreamPtr st, + const char *persist_xml, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + unsigned long resource, + virConnectPtr dconn, + const char *graphicsuri, + size_t nmigrate_disks, + const char **migrate_disks, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams) { int ret =3D -1; qemuMigrationSpec spec; @@ -4205,10 +4209,10 @@ static int doTunnelMigrate(virQEMUDriverPtr driver, goto cleanup; } =20 - ret =3D qemuMigrationRun(driver, vm, persist_xml, cookiein, cookieinle= n, - cookieout, cookieoutlen, flags, resource, &spec, - dconn, graphicsuri, nmigrate_disks, migrate_dis= ks, - compression, migParams); + ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookiei= nlen, + cookieout, cookieoutlen, flags, resource, &s= pec, + dconn, graphicsuri, nmigrate_disks, migrate_= disks, + compression, migParams); =20 cleanup: VIR_FORCE_CLOSE(spec.dest.fd.qemu); @@ -4223,14 +4227,15 @@ static int doTunnelMigrate(virQEMUDriverPtr driver, * from libvirt.c, but running in source libvirtd context, * instead of client app context & also adding in tunnel * handling */ -static int doPeer2PeerMigrate2(virQEMUDriverPtr driver, - virConnectPtr sconn, - virConnectPtr dconn, - virDomainObjPtr vm, - const char *dconnuri, - unsigned long flags, - const char *dname, - unsigned long resource) +static int +qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr driver, + virConnectPtr sconn, + virConnectPtr dconn, + virDomainObjPtr vm, + const char *dconnuri, + unsigned long flags, + const char *dname, + unsigned long resource) { virDomainPtr ddomain =3D NULL; char *uri_out =3D NULL; @@ -4264,7 +4269,7 @@ static int doPeer2PeerMigrate2(virQEMUDriverPtr drive= r, destflags =3D flags & ~(VIR_MIGRATE_ABORT_ON_ERROR | VIR_MIGRATE_AUTO_CONVERGE); =20 - if (!(compression =3D qemuMigrationCompressionParse(NULL, 0, flags))) + if (!(compression =3D qemuMigrationAnyCompressionParse(NULL, 0, flags)= )) goto cleanup; =20 VIR_DEBUG("Prepare2 %p", dconn); @@ -4316,16 +4321,16 @@ static int doPeer2PeerMigrate2(virQEMUDriverPtr dri= ver, VIR_DEBUG("Perform %p", sconn); qemuMigrationJobSetPhase(driver, vm, QEMU_MIGRATION_PHASE_PERFORM2); if (flags & VIR_MIGRATE_TUNNELLED) - ret =3D doTunnelMigrate(driver, vm, st, NULL, - NULL, 0, NULL, NULL, - flags, resource, dconn, - NULL, 0, NULL, compression, &migParams); + ret =3D qemuMigrationSrcPerformTunnel(driver, vm, st, NULL, + NULL, 0, NULL, NULL, + flags, resource, dconn, + NULL, 0, NULL, compression, &m= igParams); else - ret =3D doNativeMigrate(driver, vm, NULL, uri_out, - cookie, cookielen, - NULL, NULL, /* No out cookie with v2 migrati= on */ - flags, resource, dconn, NULL, 0, NULL, - compression, &migParams); + ret =3D qemuMigrationSrcPerformNative(driver, vm, NULL, uri_out, + cookie, cookielen, + NULL, NULL, /* No out cookie w= ith v2 migration */ + flags, resource, dconn, NULL, = 0, NULL, + compression, &migParams); =20 /* Perform failed. Make sure Finish doesn't overwrite the error */ if (ret < 0) @@ -4379,25 +4384,25 @@ static int doPeer2PeerMigrate2(virQEMUDriverPtr dri= ver, * instead of client app context & also adding in tunnel * handling */ static int -doPeer2PeerMigrate3(virQEMUDriverPtr driver, - virConnectPtr sconn, - virConnectPtr dconn, - const char *dconnuri, - virDomainObjPtr vm, - const char *xmlin, - const char *persist_xml, - const char *dname, - const char *uri, - const char *graphicsuri, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams, - unsigned long long bandwidth, - bool useParams, - unsigned long flags) +qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr driver, + virConnectPtr sconn, + virConnectPtr dconn, + const char *dconnuri, + virDomainObjPtr vm, + const char *xmlin, + const char *persist_xml, + const char *dname, + const char *uri, + const char *graphicsuri, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams, + unsigned long long bandwidth, + bool useParams, + unsigned long flags) { virDomainPtr ddomain =3D NULL; char *uri_out =3D NULL; @@ -4430,9 +4435,9 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver, * bit here, because we are already running inside the context of * a single job. */ =20 - dom_xml =3D qemuMigrationBeginPhase(driver, vm, xmlin, dname, - &cookieout, &cookieoutlen, - nmigrate_disks, migrate_disks, flags= ); + dom_xml =3D qemuMigrationSrcBeginPhase(driver, vm, xmlin, dname, + &cookieout, &cookieoutlen, + nmigrate_disks, migrate_disks, fl= ags); if (!dom_xml) goto cleanup; =20 @@ -4478,8 +4483,8 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver, nbdPort) < 0) goto cleanup; =20 - if (qemuMigrationCompressionDump(compression, ¶ms, &nparams, - &maxparams, &flags) < 0) + if (qemuMigrationAnyCompressionDump(compression, ¶ms, &nparams, + &maxparams, &flags) < 0) goto cleanup; } =20 @@ -4562,19 +4567,19 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver, cookieout =3D NULL; cookieoutlen =3D 0; if (flags & VIR_MIGRATE_TUNNELLED) { - ret =3D doTunnelMigrate(driver, vm, st, persist_xml, - cookiein, cookieinlen, - &cookieout, &cookieoutlen, - flags, bandwidth, dconn, graphicsuri, - nmigrate_disks, migrate_disks, compression, - migParams); + ret =3D qemuMigrationSrcPerformTunnel(driver, vm, st, persist_xml, + cookiein, cookieinlen, + &cookieout, &cookieoutlen, + flags, bandwidth, dconn, graph= icsuri, + nmigrate_disks, migrate_disks,= compression, + migParams); } else { - ret =3D doNativeMigrate(driver, vm, persist_xml, uri, - cookiein, cookieinlen, - &cookieout, &cookieoutlen, - flags, bandwidth, dconn, graphicsuri, - nmigrate_disks, migrate_disks, compression, - migParams); + ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, + cookiein, cookieinlen, + &cookieout, &cookieoutlen, + flags, bandwidth, dconn, graph= icsuri, + nmigrate_disks, migrate_disks,= compression, + migParams); } =20 /* Perform failed. Make sure Finish doesn't overwrite the error */ @@ -4682,9 +4687,9 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver, cookieinlen =3D cookieoutlen; cookieout =3D NULL; cookieoutlen =3D 0; - ret =3D qemuMigrationConfirmPhase(driver, vm, - cookiein, cookieinlen, - flags, cancelled); + ret =3D qemuMigrationSrcConfirmPhase(driver, vm, + cookiein, cookieinlen, + flags, cancelled); /* If Confirm3 returns -1, there's nothing more we can * do, but fortunately worst case is that there is a * domain left in 'paused' state on source. @@ -4716,9 +4721,9 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver, =20 =20 static void -qemuMigrationConnectionClosed(virConnectPtr conn, - int reason, - void *opaque) +qemuMigrationSrcConnectionClosed(virConnectPtr conn, + int reason, + void *opaque) { virDomainObjPtr vm =3D opaque; =20 @@ -4739,24 +4744,25 @@ static virConnectAuth virConnectAuthConfig =3D { }; =20 =20 -static int doPeer2PeerMigrate(virQEMUDriverPtr driver, - virConnectPtr sconn, - virDomainObjPtr vm, - const char *xmlin, - const char *persist_xml, - const char *dconnuri, - const char *uri, - const char *graphicsuri, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams, - unsigned long flags, - const char *dname, - unsigned long resource, - bool *v3proto) +static int +qemuMigrationSrcPerformPeer2Peer(virQEMUDriverPtr driver, + virConnectPtr sconn, + virDomainObjPtr vm, + const char *xmlin, + const char *persist_xml, + const char *dconnuri, + const char *uri, + const char *graphicsuri, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams, + unsigned long flags, + const char *dname, + unsigned long resource, + bool *v3proto) { int ret =3D -1; virConnectPtr dconn =3D NULL; @@ -4815,7 +4821,7 @@ static int doPeer2PeerMigrate(virQEMUDriverPtr driver, cfg->keepAliveCount) < 0) goto cleanup; =20 - if (virConnectRegisterCloseCallback(dconn, qemuMigrationConnectionClos= ed, + if (virConnectRegisterCloseCallback(dconn, qemuMigrationSrcConnectionC= losed, vm, NULL) < 0) { goto cleanup; } @@ -4873,20 +4879,20 @@ static int doPeer2PeerMigrate(virQEMUDriverPtr driv= er, flags &=3D ~VIR_MIGRATE_CHANGE_PROTECTION; =20 if (*v3proto) { - ret =3D doPeer2PeerMigrate3(driver, sconn, dconn, dconnuri, vm, xm= lin, - persist_xml, dname, uri, graphicsuri, - listenAddress, nmigrate_disks, migrate_d= isks, - nbdPort, compression, migParams, resourc= e, - useParams, flags); + ret =3D qemuMigrationSrcPerformPeer2Peer3(driver, sconn, dconn, dc= onnuri, vm, xmlin, + persist_xml, dname, uri, g= raphicsuri, + listenAddress, nmigrate_di= sks, migrate_disks, + nbdPort, compression, migP= arams, resource, + useParams, flags); } else { - ret =3D doPeer2PeerMigrate2(driver, sconn, dconn, vm, - dconnuri, flags, dname, resource); + ret =3D qemuMigrationSrcPerformPeer2Peer2(driver, sconn, dconn, vm, + dconnuri, flags, dname, re= source); } =20 cleanup: orig_err =3D virSaveLastError(); qemuDomainObjEnterRemote(vm); - virConnectUnregisterCloseCallback(dconn, qemuMigrationConnectionClosed= ); + virConnectUnregisterCloseCallback(dconn, qemuMigrationSrcConnectionClo= sed); virObjectUnref(dconn); qemuDomainObjExitRemote(vm); if (orig_err) { @@ -4904,28 +4910,28 @@ static int doPeer2PeerMigrate(virQEMUDriverPtr driv= er, * perform phase of v2 non-peer2peer migration. */ static int -qemuMigrationPerformJob(virQEMUDriverPtr driver, - virConnectPtr conn, - virDomainObjPtr vm, - const char *xmlin, - const char *persist_xml, - const char *dconnuri, - const char *uri, - const char *graphicsuri, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - const char *dname, - unsigned long resource, - bool v3proto) +qemuMigrationSrcPerformJob(virQEMUDriverPtr driver, + virConnectPtr conn, + virDomainObjPtr vm, + const char *xmlin, + const char *persist_xml, + const char *dconnuri, + const char *uri, + const char *graphicsuri, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + const char *dname, + unsigned long resource, + bool v3proto) { virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -4941,27 +4947,27 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver, goto endjob; } =20 - if (!qemuMigrationIsAllowed(driver, vm, true, flags)) + if (!qemuMigrationSrcIsAllowed(driver, vm, true, flags)) goto endjob; =20 if (!(flags & (VIR_MIGRATE_UNSAFE | VIR_MIGRATE_OFFLINE)) && - !qemuMigrationIsSafe(vm->def, nmigrate_disks, migrate_disks, flags= )) + !qemuMigrationSrcIsSafe(vm->def, nmigrate_disks, migrate_disks, fl= ags)) goto endjob; =20 - qemuMigrationStoreDomainState(vm); + qemuMigrationSrcStoreDomainState(vm); =20 if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) { - ret =3D doPeer2PeerMigrate(driver, conn, vm, xmlin, persist_xml, - dconnuri, uri, graphicsuri, listenAddress, - nmigrate_disks, migrate_disks, nbdPort, - compression, migParams, flags, dname, res= ource, - &v3proto); + ret =3D qemuMigrationSrcPerformPeer2Peer(driver, conn, vm, xmlin, = persist_xml, + dconnuri, uri, graphicsuri,= listenAddress, + nmigrate_disks, migrate_dis= ks, nbdPort, + compression, migParams, fla= gs, dname, resource, + &v3proto); } else { qemuMigrationJobSetPhase(driver, vm, QEMU_MIGRATION_PHASE_PERFORM2= ); - ret =3D doNativeMigrate(driver, vm, persist_xml, uri, cookiein, co= okieinlen, - cookieout, cookieoutlen, - flags, resource, NULL, NULL, 0, NULL, - compression, migParams); + ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri= , cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, resource, NULL, NULL, 0= , NULL, + compression, migParams); } if (ret < 0) goto endjob; @@ -4988,9 +4994,9 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver, * here */ if (!v3proto && ret < 0) - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); =20 - if (qemuMigrationRestoreDomainState(driver, vm)) { + if (qemuMigrationSrcRestoreDomainState(driver, vm)) { event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RESUMED, VIR_DOMAIN_EVENT_RESUMED_MIGRATED= ); @@ -5021,22 +5027,22 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver, * This implements perform phase of v3 migration protocol. */ static int -qemuMigrationPerformPhase(virQEMUDriverPtr driver, - virConnectPtr conn, - virDomainObjPtr vm, - const char *persist_xml, - const char *uri, - const char *graphicsuri, - size_t nmigrate_disks, - const char **migrate_disks, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - unsigned long resource) +qemuMigrationSrcPerformPhase(virQEMUDriverPtr driver, + virConnectPtr conn, + virDomainObjPtr vm, + const char *persist_xml, + const char *uri, + const char *graphicsuri, + size_t nmigrate_disks, + const char **migrate_disks, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + unsigned long resource) { virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -5051,15 +5057,15 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver, =20 qemuMigrationJobStartPhase(driver, vm, QEMU_MIGRATION_PHASE_PERFORM3); virCloseCallbacksUnset(driver->closeCallbacks, vm, - qemuMigrationCleanup); + qemuMigrationSrcCleanup); =20 - ret =3D doNativeMigrate(driver, vm, persist_xml, uri, cookiein, cookie= inlen, - cookieout, cookieoutlen, - flags, resource, NULL, graphicsuri, - nmigrate_disks, migrate_disks, compression, migP= arams); + ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, co= okiein, cookieinlen, + cookieout, cookieoutlen, + flags, resource, NULL, graphicsuri, + nmigrate_disks, migrate_disks, com= pression, migParams); =20 if (ret < 0) { - if (qemuMigrationRestoreDomainState(driver, vm)) { + if (qemuMigrationSrcRestoreDomainState(driver, vm)) { event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RES= UMED, VIR_DOMAIN_EVENT_RES= UMED_MIGRATED); @@ -5070,12 +5076,12 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver, qemuMigrationJobSetPhase(driver, vm, QEMU_MIGRATION_PHASE_PERFORM3_DON= E); =20 if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, - qemuMigrationCleanup) < 0) + qemuMigrationSrcCleanup) < 0) goto endjob; =20 endjob: if (ret < 0) { - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT); qemuMigrationJobFinish(driver, vm); } else { qemuMigrationJobContinue(vm); @@ -5091,28 +5097,28 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver, } =20 int -qemuMigrationPerform(virQEMUDriverPtr driver, - virConnectPtr conn, - virDomainObjPtr vm, - const char *xmlin, - const char *persist_xml, - const char *dconnuri, - const char *uri, - const char *graphicsuri, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - const char *dname, - unsigned long resource, - bool v3proto) +qemuMigrationSrcPerform(virQEMUDriverPtr driver, + virConnectPtr conn, + virDomainObjPtr vm, + const char *xmlin, + const char *persist_xml, + const char *dconnuri, + const char *uri, + const char *graphicsuri, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + const char *dname, + unsigned long resource, + bool v3proto) { VIR_DEBUG("driver=3D%p, conn=3D%p, vm=3D%p, xmlin=3D%s, dconnuri=3D%s,= " "uri=3D%s, graphicsuri=3D%s, listenAddress=3D%s, " @@ -5132,13 +5138,13 @@ qemuMigrationPerform(virQEMUDriverPtr driver, return -1; } =20 - return qemuMigrationPerformJob(driver, conn, vm, xmlin, persist_xm= l, dconnuri, uri, - graphicsuri, listenAddress, - nmigrate_disks, migrate_disks, nbdP= ort, - compression, migParams, - cookiein, cookieinlen, - cookieout, cookieoutlen, - flags, dname, resource, v3proto); + return qemuMigrationSrcPerformJob(driver, conn, vm, xmlin, persist= _xml, dconnuri, uri, + graphicsuri, listenAddress, + nmigrate_disks, migrate_disks, n= bdPort, + compression, migParams, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, dname, resource, v3proto); } else { if (dconnuri) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -5147,27 +5153,27 @@ qemuMigrationPerform(virQEMUDriverPtr driver, } =20 if (v3proto) { - return qemuMigrationPerformPhase(driver, conn, vm, persist_xml= , uri, - graphicsuri, - nmigrate_disks, migrate_disks, - compression, migParams, - cookiein, cookieinlen, - cookieout, cookieoutlen, - flags, resource); + return qemuMigrationSrcPerformPhase(driver, conn, vm, persist_= xml, uri, + graphicsuri, + nmigrate_disks, migrate_di= sks, + compression, migParams, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, resource); } else { - return qemuMigrationPerformJob(driver, conn, vm, xmlin, persis= t_xml, NULL, - uri, graphicsuri, listenAddress, - nmigrate_disks, migrate_disks, = nbdPort, - compression, migParams, - cookiein, cookieinlen, - cookieout, cookieoutlen, flags, - dname, resource, v3proto); + return qemuMigrationSrcPerformJob(driver, conn, vm, xmlin, per= sist_xml, NULL, + uri, graphicsuri, listenAddr= ess, + nmigrate_disks, migrate_disk= s, nbdPort, + compression, migParams, + cookiein, cookieinlen, + cookieout, cookieoutlen, fla= gs, + dname, resource, v3proto); } } } =20 static int -qemuMigrationVPAssociatePortProfiles(virDomainDefPtr def) +qemuMigrationDstVPAssociatePortProfiles(virDomainDefPtr def) { size_t i; int last_good_net =3D -1; @@ -5219,10 +5225,10 @@ qemuMigrationVPAssociatePortProfiles(virDomainDefPt= r def) =20 =20 static int -qemuMigrationPersist(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuMigrationCookiePtr mig, - bool ignoreSaveError) +qemuMigrationDstPersist(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMigrationCookiePtr mig, + bool ignoreSaveError) { virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); virCapsPtr caps =3D NULL; @@ -5271,16 +5277,16 @@ qemuMigrationPersist(virQEMUDriverPtr driver, =20 =20 virDomainPtr -qemuMigrationFinish(virQEMUDriverPtr driver, - virConnectPtr dconn, - virDomainObjPtr vm, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - int retcode, - bool v3proto) +qemuMigrationDstFinish(virQEMUDriverPtr driver, + virConnectPtr dconn, + virDomainObjPtr vm, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + int retcode, + bool v3proto) { virDomainPtr dom =3D NULL; qemuMigrationCookiePtr mig =3D NULL; @@ -5304,7 +5310,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, priv->migrationPort =3D 0; =20 if (!qemuMigrationJobIsActive(vm, QEMU_ASYNC_JOB_MIGRATION_IN)) { - qemuMigrationErrorReport(driver, vm->def->name); + qemuMigrationDstErrorReport(driver, vm->def->name); goto cleanup; } =20 @@ -5314,7 +5320,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, v3proto ? QEMU_MIGRATION_PHASE_FINISH3 : QEMU_MIGRATION_PHASE_FINISH2); =20 - qemuDomainCleanupRemove(vm, qemuMigrationPrepareCleanup); + qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); VIR_FREE(priv->job.completed); =20 cookie_flags =3D QEMU_MIGRATION_COOKIE_NETWORK | @@ -5330,7 +5336,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, =20 if (flags & VIR_MIGRATE_OFFLINE) { if (retcode =3D=3D 0 && - qemuMigrationPersist(driver, vm, mig, false) =3D=3D 0) + qemuMigrationDstPersist(driver, vm, mig, false) =3D=3D 0) dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); goto endjob; } @@ -5346,17 +5352,17 @@ qemuMigrationFinish(virQEMUDriverPtr driver, if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("guest unexpectedly quit")); - qemuMigrationErrorReport(driver, vm->def->name); + qemuMigrationDstErrorReport(driver, vm->def->name); goto endjob; } =20 - if (qemuMigrationVPAssociatePortProfiles(vm->def) < 0) + if (qemuMigrationDstVPAssociatePortProfiles(vm->def) < 0) goto endjob; =20 - if (mig->network && qemuDomainMigrateOPDRelocate(driver, vm, mig) < 0) + if (mig->network && qemuMigrationDstOPDRelocate(driver, vm, mig) < 0) VIR_WARN("unable to provide network data for relocation"); =20 - if (qemuMigrationStopNBDServer(driver, vm, mig) < 0) + if (qemuMigrationDstStopNBDServer(driver, vm, mig) < 0) goto endjob; =20 if (qemuRefreshVirtioChannelState(driver, vm, @@ -5367,7 +5373,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, goto endjob; =20 if (flags & VIR_MIGRATE_PERSIST_DEST) { - if (qemuMigrationPersist(driver, vm, mig, !v3proto) < 0) { + if (qemuMigrationDstPersist(driver, vm, mig, !v3proto) < 0) { /* Hmpf. Migration was successful, but making it persistent * was not. If we report successful, then when this domain * shuts down, management tools are in for a surprise. On the @@ -5388,9 +5394,9 @@ qemuMigrationFinish(virQEMUDriverPtr driver, /* We need to wait for QEMU to process all data sent by the source * before starting guest CPUs. */ - if (qemuMigrationWaitForDestCompletion(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_IN, - !!(flags & VIR_MIGRATE_POSTCOPY= )) < 0) { + if (qemuMigrationDstWaitForCompletion(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_IN, + !!(flags & VIR_MIGRATE_POSTCOPY)= ) < 0) { /* There's not much we can do for v2 protocol since the * original domain on the source host is already gone. */ @@ -5462,9 +5468,9 @@ qemuMigrationFinish(virQEMUDriverPtr driver, } =20 if (inPostCopy) { - if (qemuMigrationWaitForDestCompletion(driver, vm, - QEMU_ASYNC_JOB_MIGRATION_IN, - false) < 0) { + if (qemuMigrationDstWaitForCompletion(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_IN, + false) < 0) { goto endjob; } if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { @@ -5510,7 +5516,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, VIR_DOMAIN_EVENT_STOPPED_FAILED); qemuDomainEventQueue(driver, event); } else { - qemuMigrationPostcopyFailed(driver, vm); + qemuMigrationAnyPostcopyFailed(driver, vm); } } =20 @@ -5531,7 +5537,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, VIR_FREE(priv->job.completed); } =20 - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN); =20 qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm)) @@ -5562,10 +5568,10 @@ qemuMigrationFinish(virQEMUDriverPtr driver, =20 /* Helper function called while vm is active. */ int -qemuMigrationToFile(virQEMUDriverPtr driver, virDomainObjPtr vm, - int fd, - const char *compressor, - qemuDomainAsyncJob asyncJob) +qemuMigrationSrcToFile(virQEMUDriverPtr driver, virDomainObjPtr vm, + int fd, + const char *compressor, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv =3D vm->privateData; int rc; @@ -5649,7 +5655,7 @@ qemuMigrationToFile(virQEMUDriverPtr driver, virDomai= nObjPtr vm, if (rc < 0) goto cleanup; =20 - rc =3D qemuMigrationWaitForCompletion(driver, vm, asyncJob, NULL, 0); + rc =3D qemuMigrationSrcWaitForCompletion(driver, vm, asyncJob, NULL, 0= ); =20 if (rc < 0) { if (rc =3D=3D -2) { @@ -5700,8 +5706,8 @@ qemuMigrationToFile(virQEMUDriverPtr driver, virDomai= nObjPtr vm, =20 =20 int -qemuMigrationCancel(virQEMUDriverPtr driver, - virDomainObjPtr vm) +qemuMigrationSrcCancel(virQEMUDriverPtr driver, + virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv =3D vm->privateData; virHashTablePtr blockJobs =3D NULL; @@ -5750,8 +5756,8 @@ qemuMigrationCancel(virQEMUDriverPtr driver, } } =20 - if (qemuMigrationCancelDriveMirror(driver, vm, false, - QEMU_ASYNC_JOB_NONE, NULL) < 0) + if (qemuMigrationSrcCancelDriveMirror(driver, vm, false, + QEMU_ASYNC_JOB_NONE, NULL) < 0) goto endsyncjob; =20 ret =3D 0; @@ -5863,7 +5869,7 @@ qemuMigrationJobFinish(virQEMUDriverPtr driver, virDo= mainObjPtr vm) =20 =20 static void -qemuMigrationErrorFree(void *data, +qemuMigrationDstErrorFree(void *data, const void *name ATTRIBUTE_UNUSED) { virErrorPtr err =3D data; @@ -5871,9 +5877,9 @@ qemuMigrationErrorFree(void *data, } =20 int -qemuMigrationErrorInit(virQEMUDriverPtr driver) +qemuMigrationDstErrorInit(virQEMUDriverPtr driver) { - driver->migrationErrors =3D virHashAtomicNew(64, qemuMigrationErrorFre= e); + driver->migrationErrors =3D virHashAtomicNew(64, qemuMigrationDstError= Free); if (driver->migrationErrors) return 0; else @@ -5885,9 +5891,9 @@ qemuMigrationErrorInit(virQEMUDriverPtr driver) * invalid after calling this function. */ void -qemuMigrationErrorSave(virQEMUDriverPtr driver, - const char *name, - virErrorPtr err) +qemuMigrationDstErrorSave(virQEMUDriverPtr driver, + const char *name, + virErrorPtr err) { if (!err) return; @@ -5901,8 +5907,8 @@ qemuMigrationErrorSave(virQEMUDriverPtr driver, } =20 void -qemuMigrationErrorReport(virQEMUDriverPtr driver, - const char *name) +qemuMigrationDstErrorReport(virQEMUDriverPtr driver, + const char *name) { virErrorPtr err; =20 @@ -5918,9 +5924,9 @@ qemuMigrationErrorReport(virQEMUDriverPtr driver, =20 /* don't ever pass NULL params with non zero nparams */ qemuMigrationCompressionPtr -qemuMigrationCompressionParse(virTypedParameterPtr params, - int nparams, - unsigned long flags) +qemuMigrationAnyCompressionParse(virTypedParameterPtr params, + int nparams, + unsigned long flags) { size_t i; qemuMigrationCompressionPtr compression =3D NULL; @@ -6001,11 +6007,11 @@ qemuMigrationCompressionParse(virTypedParameterPtr = params, } =20 int -qemuMigrationCompressionDump(qemuMigrationCompressionPtr compression, - virTypedParameterPtr *params, - int *nparams, - int *maxparams, - unsigned long *flags) +qemuMigrationAnyCompressionDump(qemuMigrationCompressionPtr compression, + virTypedParameterPtr *params, + int *nparams, + int *maxparams, + unsigned long *flags) { size_t i; =20 @@ -6052,15 +6058,15 @@ qemuMigrationCompressionDump(qemuMigrationCompressi= onPtr compression, =20 =20 /* - * qemuMigrationReset: + * qemuMigrationAnyReset: * * Reset all migration parameters so that the next job which internally us= es * migration (save, managedsave, snapshots, dump) will not try to use them. */ void -qemuMigrationReset(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob job) +qemuMigrationAnyReset(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob job) { qemuMonitorMigrationCaps cap; virErrorPtr err =3D virSaveLastError(); @@ -6068,12 +6074,12 @@ qemuMigrationReset(virQEMUDriverPtr driver, if (!virDomainObjIsActive(vm)) goto cleanup; =20 - if (qemuMigrationResetTLS(driver, vm, job) < 0) + if (qemuMigrationAnyResetTLS(driver, vm, job) < 0) goto cleanup; =20 for (cap =3D 0; cap < QEMU_MONITOR_MIGRATION_CAPS_LAST; cap++) { - if (qemuMigrationCapsGet(vm, cap) && - qemuMigrationSetOption(driver, vm, cap, false, job) < 0) + if (qemuMigrationAnyCapsGet(vm, cap) && + qemuMigrationAnySetOption(driver, vm, cap, false, job) < 0) goto cleanup; } =20 @@ -6086,10 +6092,10 @@ qemuMigrationReset(virQEMUDriverPtr driver, =20 =20 int -qemuMigrationFetchMirrorStats(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - qemuDomainJobInfoPtr jobInfo) +qemuMigrationSrcFetchMirrorStats(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + qemuDomainJobInfoPtr jobInfo) { size_t i; qemuDomainObjPrivatePtr priv =3D vm->privateData; @@ -6137,8 +6143,8 @@ qemuMigrationFetchMirrorStats(virQEMUDriverPtr driver, =20 =20 bool -qemuMigrationCapsGet(virDomainObjPtr vm, - qemuMonitorMigrationCaps cap) +qemuMigrationAnyCapsGet(virDomainObjPtr vm, + qemuMonitorMigrationCaps cap) { qemuDomainObjPrivatePtr priv =3D vm->privateData; bool enabled =3D false; diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 234f1eb858..f769f7417d 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -25,6 +25,19 @@ # include "qemu_conf.h" # include "qemu_domain.h" =20 +/* + * General function naming conventions: + * + * - qemuMigrationSrcXXX - only runs on source host + * - qemuMigrationDstXXX - only runs on dest host + * - qemuMigrationAnyXXX - runs on source or dest host + * + * Exceptions: + * + * - qemuMigrationParamsXXX - runs on source or dest host + * - qemuMigrationJobXXX - runs on source or dest host + */ + typedef struct _qemuMigrationCompression qemuMigrationCompression; typedef qemuMigrationCompression *qemuMigrationCompressionPtr; =20 @@ -112,15 +125,15 @@ struct _qemuMigrationCompression { }; =20 qemuMigrationCompressionPtr -qemuMigrationCompressionParse(virTypedParameterPtr params, - int nparams, - unsigned long flags); +qemuMigrationAnyCompressionParse(virTypedParameterPtr params, + int nparams, + unsigned long flags); int -qemuMigrationCompressionDump(qemuMigrationCompressionPtr compression, - virTypedParameterPtr *params, - int *nparams, - int *maxparams, - unsigned long *flags); +qemuMigrationAnyCompressionDump(qemuMigrationCompressionPtr compression, + virTypedParameterPtr *params, + int *nparams, + int *maxparams, + unsigned long *flags); =20 void qemuMigrationParamsClear(qemuMonitorMigrationParamsPtr migParams); @@ -130,170 +143,170 @@ qemuMigrationParamsFree(qemuMonitorMigrationParamsP= tr *migParams); =20 qemuMonitorMigrationParamsPtr qemuMigrationParams(virTypedParameterPtr params, - int nparams, - unsigned long flags); + int nparams, + unsigned long flags); =20 int -qemuMigrationSetOffline(virQEMUDriverPtr driver, - virDomainObjPtr vm); +qemuMigrationSrcSetOffline(virQEMUDriverPtr driver, + virDomainObjPtr vm); =20 char * -qemuMigrationBegin(virConnectPtr conn, - virDomainObjPtr vm, - const char *xmlin, - const char *dname, - char **cookieout, - int *cookieoutlen, - size_t nmigrate_disks, - const char **migrate_disks, - unsigned long flags); +qemuMigrationSrcBegin(virConnectPtr conn, + virDomainObjPtr vm, + const char *xmlin, + const char *dname, + char **cookieout, + int *cookieoutlen, + size_t nmigrate_disks, + const char **migrate_disks, + unsigned long flags); =20 virDomainDefPtr -qemuMigrationPrepareDef(virQEMUDriverPtr driver, - const char *dom_xml, - const char *dname, - char **origname); +qemuMigrationAnyPrepareDef(virQEMUDriverPtr driver, + const char *dom_xml, + const char *dname, + char **origname); =20 int -qemuMigrationPrepareTunnel(virQEMUDriverPtr driver, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - virStreamPtr st, - virDomainDefPtr *def, - const char *origname, - unsigned long flags); +qemuMigrationDstPrepareTunnel(virQEMUDriverPtr driver, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + virStreamPtr st, + virDomainDefPtr *def, + const char *origname, + unsigned long flags); =20 int -qemuMigrationPrepareDirect(virQEMUDriverPtr driver, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - const char *uri_in, - char **uri_out, - virDomainDefPtr *def, - const char *origname, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - unsigned long flags); +qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + const char *uri_in, + char **uri_out, + virDomainDefPtr *def, + const char *origname, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + unsigned long flags); =20 int -qemuMigrationPerform(virQEMUDriverPtr driver, - virConnectPtr conn, - virDomainObjPtr vm, - const char *xmlin, - const char *persist_xml, - const char *dconnuri, - const char *uri, - const char *graphicsuri, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - qemuMigrationCompressionPtr compression, - qemuMonitorMigrationParamsPtr migParams, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - const char *dname, - unsigned long resource, - bool v3proto); +qemuMigrationSrcPerform(virQEMUDriverPtr driver, + virConnectPtr conn, + virDomainObjPtr vm, + const char *xmlin, + const char *persist_xml, + const char *dconnuri, + const char *uri, + const char *graphicsuri, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + qemuMigrationCompressionPtr compression, + qemuMonitorMigrationParamsPtr migParams, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + const char *dname, + unsigned long resource, + bool v3proto); =20 virDomainPtr -qemuMigrationFinish(virQEMUDriverPtr driver, - virConnectPtr dconn, - virDomainObjPtr vm, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - int retcode, - bool v3proto); +qemuMigrationDstFinish(virQEMUDriverPtr driver, + virConnectPtr dconn, + virDomainObjPtr vm, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + int retcode, + bool v3proto); =20 int -qemuMigrationConfirm(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *cookiein, - int cookieinlen, - unsigned int flags, - int cancelled); +qemuMigrationSrcConfirm(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *cookiein, + int cookieinlen, + unsigned int flags, + int cancelled); =20 bool -qemuMigrationIsAllowed(virQEMUDriverPtr driver, - virDomainObjPtr vm, - bool remote, - unsigned int flags); +qemuMigrationSrcIsAllowed(virQEMUDriverPtr driver, + virDomainObjPtr vm, + bool remote, + unsigned int flags); =20 int -qemuMigrationToFile(virQEMUDriverPtr driver, - virDomainObjPtr vm, - int fd, - const char *compressor, - qemuDomainAsyncJob asyncJob) +qemuMigrationSrcToFile(virQEMUDriverPtr driver, + virDomainObjPtr vm, + int fd, + const char *compressor, + qemuDomainAsyncJob asyncJob) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; =20 int -qemuMigrationCancel(virQEMUDriverPtr driver, - virDomainObjPtr vm); +qemuMigrationSrcCancel(virQEMUDriverPtr driver, + virDomainObjPtr vm); =20 int -qemuMigrationFetchStats(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - qemuDomainJobInfoPtr jobInfo, - char **error); +qemuMigrationAnyFetchStats(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + qemuDomainJobInfoPtr jobInfo, + char **error); =20 int -qemuMigrationErrorInit(virQEMUDriverPtr driver); +qemuMigrationDstErrorInit(virQEMUDriverPtr driver); =20 void -qemuMigrationErrorSave(virQEMUDriverPtr driver, - const char *name, - virErrorPtr err); +qemuMigrationDstErrorSave(virQEMUDriverPtr driver, + const char *name, + virErrorPtr err); =20 void -qemuMigrationErrorReport(virQEMUDriverPtr driver, - const char *name); +qemuMigrationDstErrorReport(virQEMUDriverPtr driver, + const char *name); =20 int -qemuMigrationCheckIncoming(virQEMUCapsPtr qemuCaps, - const char *migrateFrom); +qemuMigrationDstCheckIncoming(virQEMUCapsPtr qemuCaps, + const char *migrateFrom); =20 char * -qemuMigrationIncomingURI(const char *migrateFrom, - int migrateFd); +qemuMigrationDstIncomingURI(const char *migrateFrom, + int migrateFd); =20 int -qemuMigrationRunIncoming(virQEMUDriverPtr driver, - virDomainObjPtr vm, - const char *uri, - qemuDomainAsyncJob asyncJob); +qemuMigrationDstRunIncoming(virQEMUDriverPtr driver, + virDomainObjPtr vm, + const char *uri, + qemuDomainAsyncJob asyncJob); =20 void -qemuMigrationPostcopyFailed(virQEMUDriverPtr driver, +qemuMigrationAnyPostcopyFailed(virQEMUDriverPtr driver, virDomainObjPtr vm); =20 void -qemuMigrationReset(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob job); +qemuMigrationAnyReset(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob job); =20 int -qemuMigrationFetchMirrorStats(virQEMUDriverPtr driver, - virDomainObjPtr vm, - qemuDomainAsyncJob asyncJob, - qemuDomainJobInfoPtr jobInfo); +qemuMigrationSrcFetchMirrorStats(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob, + qemuDomainJobInfoPtr jobInfo); =20 bool -qemuMigrationCapsGet(virDomainObjPtr vm, - qemuMonitorMigrationCaps cap); +qemuMigrationAnyCapsGet(virDomainObjPtr vm, + qemuMonitorMigrationCaps cap); =20 #endif /* __QEMU_MIGRATION_H__ */ diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d0bab5d84e..585c6ae2c4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3069,7 +3069,7 @@ qemuProcessRecoverMigrationIn(virQEMUDriverPtr driver, * confirm success or failure yet; killing it seems safest unless * we already started guest CPUs or we were in post-copy mode */ if (postcopy) { - qemuMigrationPostcopyFailed(driver, vm); + qemuMigrationAnyPostcopyFailed(driver, vm); } else if (state !=3D VIR_DOMAIN_RUNNING) { VIR_DEBUG("Killing migrated domain %s", vm->def->name); return -1; @@ -3077,7 +3077,7 @@ qemuProcessRecoverMigrationIn(virQEMUDriverPtr driver, break; } =20 - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_NONE); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_NONE); return 0; } =20 @@ -3115,11 +3115,11 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr dri= ver, * post-copy mode */ if (postcopy) { - qemuMigrationPostcopyFailed(driver, vm); + qemuMigrationAnyPostcopyFailed(driver, vm); } else { VIR_DEBUG("Cancelling unfinished migration of domain %s", vm->def->name); - if (qemuMigrationCancel(driver, vm) < 0) { + if (qemuMigrationSrcCancel(driver, vm) < 0) { VIR_WARN("Could not cancel ongoing migration of domain %s", vm->def->name); } @@ -3133,7 +3133,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr drive= r, * post-copy mode we can use PAUSED_POSTCOPY_FAILED state for this */ if (postcopy) - qemuMigrationPostcopyFailed(driver, vm); + qemuMigrationAnyPostcopyFailed(driver, vm); break; =20 case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: @@ -3142,7 +3142,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr drive= r, * as broken in that case */ if (postcopy) { - qemuMigrationPostcopyFailed(driver, vm); + qemuMigrationAnyPostcopyFailed(driver, vm); } else { VIR_DEBUG("Resuming domain %s after failed migration", vm->def->name); @@ -3171,7 +3171,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr drive= r, } } =20 - qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_NONE); + qemuMigrationAnyReset(driver, vm, QEMU_ASYNC_JOB_NONE); return 0; } =20 @@ -4142,7 +4142,7 @@ qemuProcessIncomingDefNew(virQEMUCapsPtr qemuCaps, { qemuProcessIncomingDefPtr inc =3D NULL; =20 - if (qemuMigrationCheckIncoming(qemuCaps, migrateFrom) < 0) + if (qemuMigrationDstCheckIncoming(qemuCaps, migrateFrom) < 0) return NULL; =20 if (VIR_ALLOC(inc) < 0) @@ -4151,7 +4151,7 @@ qemuProcessIncomingDefNew(virQEMUCapsPtr qemuCaps, if (VIR_STRDUP(inc->address, listenAddress) < 0) goto error; =20 - inc->launchURI =3D qemuMigrationIncomingURI(migrateFrom, fd); + inc->launchURI =3D qemuMigrationDstIncomingURI(migrateFrom, fd); if (!inc->launchURI) goto error; =20 @@ -6348,7 +6348,7 @@ qemuProcessStart(virConnectPtr conn, =20 if (incoming && incoming->deferredURI && - qemuMigrationRunIncoming(driver, vm, incoming->deferredURI, asyncJ= ob) < 0) + qemuMigrationDstRunIncoming(driver, vm, incoming->deferredURI, asy= ncJob) < 0) goto stop; =20 if (qemuProcessFinishStartup(driver, vm, asyncJob, diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 8d291000a7..cb3c5376d6 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -448,8 +448,8 @@ testCompareXMLToArgv(const void *data) goto cleanup; =20 if (info->migrateFrom && - !(migrateURI =3D qemuMigrationIncomingURI(info->migrateFrom, - info->migrateFd))) + !(migrateURI =3D qemuMigrationDstIncomingURI(info->migrateFrom, + info->migrateFd))) goto cleanup; =20 if (!(vm =3D virDomainObjNew(driver.xmlopt))) --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list