[libvirt] [PATCH 3/6] conf: stop passing virConnectPtr into virDomainDiskTranslateSourcePool
John Ferlan
jferlan at redhat.com
Tue Feb 13 17:34:54 UTC 2018
On 02/09/2018 12:24 PM, Daniel P. Berrangé wrote:
> Rather than expecting callers to pass a virConnectPtr into the
> virDomainDiskTranslateSourcePool() method, just acquire a connection
> to the storage driver when needed.
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> 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 ++--
> 7 files changed, 29 insertions(+), 35 deletions(-)
>
qemuxml2argvtest fails with this patch (turned on VIR_TEST_DEBUG=1)
171) QEMU XML-2-ARGV disk-source-pool
... libvirt: XML-RPC error : Failed to connect socket to
'/run/user/1000/libvirt/libvirt-sock': No such file or directory
libvirt: XML-RPC error : Failed to connect socket to
'/run/user/1000/libvirt/libvirt-sock': No such file or directory
FAILED
172) QEMU XML-2-ARGV disk-source-pool-mode
... libvirt: XML-RPC error : Failed to connect socket to
'/run/user/1000/libvirt/libvirt-sock': No such file or directory
libvirt: XML-RPC error : Failed to connect socket to
'/run/user/1000/libvirt/libvirt-sock': No such file or directory
FAILED
...
428) QEMU XML-2-ARGV luks-disks-source
... libvirt: XML-RPC error : Failed to connect socket to
'/run/user/1000/libvirt/libvirt-sock': No such file or directory
libvirt: XML-RPC error : Failed to connect socket to
'/run/user/1000/libvirt/libvirt-sock': No such file or directory
FAILED
Turning on LIBVIRT_DEBUG=1 finds:
2018-02-13 17:16:05.206+0000: 24834: debug : virConnectOpenInternal:1033
: Split "storage:///session" to URI components:
scheme storage
server <null>
user <null>
port -1
path /session
It seems the test driver will need some updating... I wonder if perhaps
these were missed because you had disabled qemuxml2argvtest for a bit,
but now that it's back...
John
> 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(virDomainDiskDefPtr def,
>
>
> int
> -virDomainDiskTranslateSourcePool(virConnectPtr conn,
> - virDomainDiskDefPtr def)
> +virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
> {
> + virConnectPtr conn = NULL;
> virStoragePoolDefPtr pooldef = NULL;
> virStoragePoolPtr pool = NULL;
> virStorageVolPtr vol = NULL;
> @@ -29084,9 +29084,12 @@ virDomainDiskTranslateSourcePool(virConnectPtr conn,
> if (!def->src->srcpool)
> return 0;
>
> - if (!(pool = virStoragePoolLookupByName(conn, def->src->srcpool->pool)))
> + if (!(conn = virGetConnectStorage()))
> return -1;
>
> + if (!(pool = virStoragePoolLookupByName(conn, def->src->srcpool->pool)))
> + goto cleanup;
> +
> if (virStoragePoolIsActive(pool) != 1) {
> virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> _("storage pool '%s' containing volume '%s' "
> @@ -29230,6 +29233,7 @@ virDomainDiskTranslateSourcePool(virConnectPtr conn,
>
> ret = 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 iface)
> ATTRIBUTE_NONNULL(1);
>
>
> -int virDomainDiskTranslateSourcePool(virConnectPtr conn,
> - virDomainDiskDefPtr def);
> +int virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def);
>
>
> #endif /* __DOMAIN_CONF_H */
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index 2fa96431fa..b1ee36efea 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -1635,8 +1635,7 @@ int qemuDriverAllocateID(virQEMUDriverPtr driver)
>
>
> int
> -qemuTranslateSnapshotDiskSourcePool(virConnectPtr conn ATTRIBUTE_UNUSED,
> - virDomainSnapshotDiskDefPtr def)
> +qemuTranslateSnapshotDiskSourcePool(virDomainSnapshotDiskDefPtr def)
> {
> if (def->src->type != VIR_STORAGE_TYPE_VOLUME)
> return 0;
> diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
> index 3f38a76c26..947e52dfe2 100644
> --- a/src/qemu/qemu_conf.h
> +++ b/src/qemu/qemu_conf.h
> @@ -352,8 +352,7 @@ int qemuSetUnprivSGIO(virDomainDeviceDefPtr dev);
> int qemuDriverAllocateID(virQEMUDriverPtr driver);
> virDomainXMLOptionPtr virQEMUDriverCreateXMLConf(virQEMUDriverPtr driver);
>
> -int qemuTranslateSnapshotDiskSourcePool(virConnectPtr conn,
> - virDomainSnapshotDiskDefPtr def);
> +int qemuTranslateSnapshotDiskSourcePool(virDomainSnapshotDiskDefPtr def);
>
> char * qemuGetBaseHugepagePath(virHugeTLBFSPtr hugepage);
> char * qemuGetDomainHugepagePath(const virDomainDef *def,
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 0aa0f05d3c..6eec6d282c 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7871,8 +7871,7 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm,
> }
>
> 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 = NULL;
> int ret = -1;
>
> - if (virDomainDiskTranslateSourcePool(conn, disk) < 0)
> + if (virDomainDiskTranslateSourcePool(disk) < 0)
> goto cleanup;
>
> if (qemuDomainDetermineDiskChain(driver, vm, disk, false, true) < 0)
> @@ -7932,8 +7931,7 @@ qemuDomainChangeDiskLive(virConnectPtr conn,
> }
>
> 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 = qemuDomainChangeDiskLive(conn, vm, dev, driver, force);
> + ret = qemuDomainChangeDiskLive(vm, dev, driver, force);
> break;
> case VIR_DOMAIN_DEVICE_GRAPHICS:
> ret = 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 conn,
>
> if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
> goto cleanup;
> - if ((ret = qemuDomainAttachDeviceConfig(vmdef, dev, conn, caps,
> + if ((ret = qemuDomainAttachDeviceConfig(vmdef, dev, caps,
> parse_flags,
> driver->xmlopt)) < 0)
> goto cleanup;
> @@ -8654,7 +8651,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
> if (virDomainDefCompatibleDevice(vm->def, dev_copy) < 0)
> goto endjob;
>
> - if ((ret = qemuDomainUpdateDeviceLive(dom->conn, vm, dev_copy, dom, force)) < 0)
> + if ((ret = qemuDomainUpdateDeviceLive(vm, dev_copy, dom, force)) < 0)
> goto endjob;
> /*
> * update domain status forcibly because the domain status may be
> @@ -14229,8 +14226,7 @@ qemuDomainSnapshotPrepareDiskExternalActive(virDomainSnapshotDiskDefPtr snapdisk
>
>
> static int
> -qemuDomainSnapshotPrepareDiskExternal(virConnectPtr conn,
> - virDomainDiskDefPtr disk,
> +qemuDomainSnapshotPrepareDiskExternal(virDomainDiskDefPtr disk,
> virDomainSnapshotDiskDefPtr snapdisk,
> bool active,
> bool reuse)
> @@ -14238,11 +14234,11 @@ qemuDomainSnapshotPrepareDiskExternal(virConnectPtr conn,
> int ret = -1;
> struct stat st;
>
> - if (qemuTranslateSnapshotDiskSourcePool(conn, snapdisk) < 0)
> + if (qemuTranslateSnapshotDiskSourcePool(snapdisk) < 0)
> return -1;
>
> if (!active) {
> - if (virDomainDiskTranslateSourcePool(conn, disk) < 0)
> + if (virDomainDiskTranslateSourcePool(disk) < 0)
> return -1;
>
> if (qemuDomainSnapshotPrepareDiskExternalInactive(snapdisk, disk) < 0)
> @@ -14284,8 +14280,7 @@ qemuDomainSnapshotPrepareDiskExternal(virConnectPtr conn,
>
>
> 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;
>
> - if (virDomainDiskTranslateSourcePool(conn, disk) < 0)
> + if (virDomainDiskTranslateSourcePool(disk) < 0)
> return -1;
>
> actualType = virStorageSourceGetActualType(disk->src);
> @@ -14343,8 +14338,7 @@ qemuDomainSnapshotPrepareDiskInternal(virConnectPtr conn,
>
>
> static int
> -qemuDomainSnapshotPrepare(virConnectPtr conn,
> - virDomainObjPtr vm,
> +qemuDomainSnapshotPrepare(virDomainObjPtr vm,
> virDomainSnapshotDefPtr def,
> unsigned int *flags)
> {
> @@ -14385,7 +14379,7 @@ qemuDomainSnapshotPrepare(virConnectPtr conn,
> goto cleanup;
> }
>
> - if (qemuDomainSnapshotPrepareDiskInternal(conn, dom_disk,
> + if (qemuDomainSnapshotPrepareDiskInternal(dom_disk,
> active) < 0)
> goto cleanup;
>
> @@ -14414,7 +14408,7 @@ qemuDomainSnapshotPrepare(virConnectPtr conn,
> goto cleanup;
> }
>
> - if (qemuDomainSnapshotPrepareDiskExternal(conn, dom_disk, disk,
> + if (qemuDomainSnapshotPrepareDiskExternal(dom_disk, disk,
> active, reuse) < 0)
> goto cleanup;
>
> @@ -15062,7 +15056,6 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
> const char *xmlDesc,
> unsigned int flags)
> {
> - virConnectPtr conn = domain->conn;
> virQEMUDriverPtr driver = domain->conn->privateData;
> virDomainObjPtr vm = NULL;
> char *xml = 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;
> }
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index c7bf25eeef..a2268be576 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -713,7 +713,7 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn,
> goto cleanup;
> }
>
> - if (virDomainDiskTranslateSourcePool(conn, disk) < 0)
> + if (virDomainDiskTranslateSourcePool(disk) < 0)
> goto cleanup;
>
> 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 = i - 1;
> virDomainDiskDefPtr disk = vm->def->disks[idx];
>
> - if (virDomainDiskTranslateSourcePool(conn, disk) < 0) {
> + if (virDomainDiskTranslateSourcePool(disk) < 0) {
> if (qemuDomainCheckDiskStartupPolicy(driver, vm, idx, cold_boot) < 0)
> return -1;
>
> @@ -7362,7 +7362,7 @@ qemuProcessReconnect(void *opaque)
> virDomainDiskDefPtr disk = obj->def->disks[i];
> virDomainDeviceDef dev;
>
> - if (virDomainDiskTranslateSourcePool(conn, disk) < 0)
> + if (virDomainDiskTranslateSourcePool(disk) < 0)
> goto error;
>
> /* backing chains need to be refreshed only if they could change */
>
More information about the libvir-list
mailing list