[libvirt] [PATCH 4/4] Move pciaddrs from private data to domainDef

Tomasz Flendrich t.flendrich at gmail.com
Mon Jun 20 00:18:40 UTC 2016


---
 src/bhyve/bhyve_device.c       | 16 +++-------------
 src/bhyve/bhyve_domain.c       |  2 --
 src/bhyve/bhyve_domain.h       |  3 ---
 src/conf/domain_conf.c         |  1 +
 src/conf/domain_conf.h         |  1 +
 src/qemu/qemu_domain.c         |  3 +--
 src/qemu/qemu_domain.h         |  2 --
 src/qemu/qemu_domain_address.c | 22 ++++++++--------------
 src/qemu/qemu_domain_address.h |  3 +--
 src/qemu/qemu_hotplug.c        | 15 +++++++--------
 src/qemu/qemu_process.c        |  6 +++---
 tests/qemuhotplugtest.c        |  2 +-
 12 files changed, 26 insertions(+), 50 deletions(-)

diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c
index 8373a5f..9ddd9aa 100644
--- a/src/bhyve/bhyve_device.c
+++ b/src/bhyve/bhyve_device.c
@@ -135,11 +135,9 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
     return -1;
 }
 
-int bhyveDomainAssignPCIAddresses(virDomainDefPtr def,
-                                  virDomainObjPtr obj)
+int bhyveDomainAssignPCIAddresses(virDomainDefPtr def)
 {
     virDomainPCIAddressSetPtr addrs = NULL;
-    bhyveDomainObjPrivatePtr priv = NULL;
 
     int ret = -1;
 
@@ -149,16 +147,8 @@ int bhyveDomainAssignPCIAddresses(virDomainDefPtr def,
     if (bhyveAssignDevicePCISlots(def, addrs) < 0)
         goto cleanup;
 
-    if (obj && obj->privateData) {
-        priv = obj->privateData;
-        if (addrs) {
-            virDomainPCIAddressSetFree(priv->pciaddrs);
-            priv->persistentAddrs = 1;
-            priv->pciaddrs = addrs;
-        } else {
-            priv->persistentAddrs = 0;
-        }
-    }
+    virDomainPCIAddressSetFree(def->pciaddrs);
+    def->pciaddrs = addrs;
 
     ret = 0;
 
diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c
index 89cb171..81e5c8d 100644
--- a/src/bhyve/bhyve_domain.c
+++ b/src/bhyve/bhyve_domain.c
@@ -47,8 +47,6 @@ bhyveDomainObjPrivateFree(void *data)
 {
     bhyveDomainObjPrivatePtr priv = data;
 
-    virDomainPCIAddressSetFree(priv->pciaddrs);
-
     VIR_FREE(priv);
 }
 
diff --git a/src/bhyve/bhyve_domain.h b/src/bhyve/bhyve_domain.h
index 0a60392..262605e 100644
--- a/src/bhyve/bhyve_domain.h
+++ b/src/bhyve/bhyve_domain.h
@@ -31,9 +31,6 @@
 typedef struct _bhyveDomainObjPrivate bhyveDomainObjPrivate;
 typedef bhyveDomainObjPrivate *bhyveDomainObjPrivatePtr;
 struct _bhyveDomainObjPrivate {
-    virDomainPCIAddressSetPtr pciaddrs;
-    bool persistentAddrs;
-
     bhyveMonitorPtr mon;
 };
 
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 5f31a97..96731df 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2726,6 +2726,7 @@ void virDomainDefFree(virDomainDefPtr def)
 
     virDomainVirtioSerialAddrSetFree(def->vioserialaddrs);
     virDomainCCWAddressSetFree(def->ccwaddrs);
+    virDomainPCIAddressSetFree(def->pciaddrs);
 
     VIR_FREE(def);
 }
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 887e061..a1f14e0 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2319,6 +2319,7 @@ struct _virDomainDef {
 
     virDomainVirtioSerialAddrSetPtr vioserialaddrs;
     virDomainCCWAddressSetPtr ccwaddrs;
+    virDomainPCIAddressSetPtr pciaddrs;
 
     /* Application-specific custom metadata */
     xmlNodePtr metadata;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 5e3d305..afcb012 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1247,7 +1247,6 @@ qemuDomainObjPrivateFree(void *data)
     virObjectUnref(priv->qemuCaps);
 
     virCgroupFree(&priv->cgroup);
-    virDomainPCIAddressSetFree(priv->pciaddrs);
     virDomainChrSourceDefFree(priv->monConfig);
     qemuDomainObjFreeJob(priv);
     VIR_FREE(priv->vcpupids);
@@ -2433,7 +2432,7 @@ qemuDomainDefAssignAddresses(virDomainDef *def,
                                             def->emulator)))
         goto cleanup;
 
-    if (qemuDomainAssignAddresses(def, qemuCaps, NULL) < 0)
+    if (qemuDomainAssignAddresses(def, qemuCaps) < 0)
         goto cleanup;
 
     ret = 0;
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 4a15260..59b41de 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -187,8 +187,6 @@ struct _qemuDomainObjPrivate {
     int nvcpupids;
     int *vcpupids;
 
-    virDomainPCIAddressSetPtr pciaddrs;
-
     virQEMUCapsPtr qemuCaps;
     char *lockState;
 
diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
index 5d58eb1..fa42144 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -947,12 +947,10 @@ qemuDomainSupportsPCI(virDomainDefPtr def,
 
 static int
 qemuDomainAssignPCIAddresses(virDomainDefPtr def,
-                             virQEMUCapsPtr qemuCaps,
-                             virDomainObjPtr obj)
+                             virQEMUCapsPtr qemuCaps)
 {
     int ret = -1;
     virDomainPCIAddressSetPtr addrs = NULL;
-    qemuDomainObjPrivatePtr priv = NULL;
     int max_idx = -1;
     int nbuses = 0;
     size_t i;
@@ -1113,13 +1111,10 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
         }
     }
 
-    if (obj && obj->privateData) {
-        priv = obj->privateData;
-        /* if this is the live domain object, we persist the PCI addresses */
-        virDomainPCIAddressSetFree(priv->pciaddrs);
-        priv->pciaddrs = addrs;
-        addrs = NULL;
-    }
+    /* we persist the PCI addresses */
+    virDomainPCIAddressSetFree(def->pciaddrs);
+    def->pciaddrs = addrs;
+    addrs = NULL;
 
     ret = 0;
 
@@ -1132,8 +1127,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
 
 int
 qemuDomainAssignAddresses(virDomainDefPtr def,
-                          virQEMUCapsPtr qemuCaps,
-                          virDomainObjPtr obj)
+                          virQEMUCapsPtr qemuCaps)
 {
     if (virDomainAssignVirtioSerialAddresses(def) < 0)
         return -1;
@@ -1146,7 +1140,7 @@ qemuDomainAssignAddresses(virDomainDefPtr def,
 
     qemuDomainAssignARMVirtioMMIOAddresses(def, qemuCaps);
 
-    if (qemuDomainAssignPCIAddresses(def, qemuCaps, obj) < 0)
+    if (qemuDomainAssignPCIAddresses(def, qemuCaps) < 0)
         return -1;
 
     return 0;
@@ -1170,7 +1164,7 @@ qemuDomainReleaseDeviceAddress(virDomainObjPtr vm,
         VIR_WARN("Unable to release CCW address on %s",
                  NULLSTR(devstr));
     else if (virDeviceInfoPCIAddressPresent(info) &&
-             virDomainPCIAddressReleaseSlot(priv->pciaddrs,
+             virDomainPCIAddressReleaseSlot(vm->def->pciaddrs,
                                             &info->addr.pci) < 0)
         VIR_WARN("Unable to release PCI address on %s",
                  NULLSTR(devstr));
diff --git a/src/qemu/qemu_domain_address.h b/src/qemu/qemu_domain_address.h
index 50019b8..03b99d9 100644
--- a/src/qemu/qemu_domain_address.h
+++ b/src/qemu/qemu_domain_address.h
@@ -32,8 +32,7 @@ int qemuDomainSetSCSIControllerModel(const virDomainDef *def,
                                      int *model);
 
 int qemuDomainAssignAddresses(virDomainDefPtr def,
-                              virQEMUCapsPtr qemuCaps,
-                              virDomainObjPtr obj)
+                              virQEMUCapsPtr qemuCaps)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
 
 void qemuDomainReleaseDeviceAddress(virDomainObjPtr vm,
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index bed4173..46e2143 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -332,7 +332,7 @@ qemuDomainAttachVirtioDiskDevice(virConnectPtr conn,
             goto error;
     } else if (!disk->info.type ||
                 disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
-        if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &disk->info) < 0)
+        if (virDomainPCIAddressEnsureAddr(vm->def->pciaddrs, &disk->info) < 0)
             goto error;
     }
     releaseaddr = true;
@@ -454,7 +454,7 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver,
 
     if (controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE ||
         controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
-        if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &controller->info) < 0)
+        if (virDomainPCIAddressEnsureAddr(vm->def->pciaddrs, &controller->info) < 0)
             goto cleanup;
     } else if (controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) {
         if (virDomainCCWAddressAssign(&controller->info, vm->def->ccwaddrs,
@@ -951,7 +951,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("virtio-s390 net device cannot be hotplugged."));
         goto cleanup;
-    } else if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &net->info) < 0) {
+    } else if (virDomainPCIAddressEnsureAddr(vm->def->pciaddrs, &net->info) < 0) {
         goto cleanup;
     }
 
@@ -1230,7 +1230,7 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver,
 
     if (qemuAssignDeviceHostdevAlias(vm->def, &hostdev->info->alias, -1) < 0)
         goto error;
-    if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, hostdev->info) < 0)
+    if (virDomainPCIAddressEnsureAddr(vm->def->pciaddrs, hostdev->info) < 0)
         goto error;
     releaseaddr = true;
     if (backend != VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO &&
@@ -1458,7 +1458,6 @@ qemuDomainChrRemove(virDomainDefPtr vmdef,
 
 static int
 qemuDomainAttachChrDeviceAssignAddr(virDomainDefPtr vmdef,
-                                    qemuDomainObjPrivatePtr priv,
                                     virDomainChrDefPtr chr)
 {
     if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
@@ -1470,7 +1469,7 @@ qemuDomainAttachChrDeviceAssignAddr(virDomainDefPtr vmdef,
 
     } else if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
                chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI) {
-        if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &chr->info) < 0)
+        if (virDomainPCIAddressEnsureAddr(vmdef->pciaddrs, &chr->info) < 0)
             return -1;
         return 1;
 
@@ -1510,7 +1509,7 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
     if (qemuAssignDeviceChrAlias(vmdef, chr, -1) < 0)
         goto cleanup;
 
-    if ((rc = qemuDomainAttachChrDeviceAssignAddr(vmdef, priv, chr)) < 0)
+    if ((rc = qemuDomainAttachChrDeviceAssignAddr(vmdef, chr)) < 0)
         goto cleanup;
     if (rc == 1)
         need_release = true;
@@ -1591,7 +1590,7 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver,
 
     if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE ||
         rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
-        if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &rng->info) < 0)
+        if (virDomainPCIAddressEnsureAddr(vm->def->pciaddrs, &rng->info) < 0)
             return -1;
     } else if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) {
         if (virDomainCCWAddressAssign(&rng->info, vm->def->ccwaddrs,
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 373e7a9..f107193 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3291,7 +3291,7 @@ qemuProcessReconnect(void *opaque)
         goto cleanup;
     }
 
-    if ((qemuDomainAssignAddresses(obj->def, priv->qemuCaps, obj)) < 0)
+    if ((qemuDomainAssignAddresses(obj->def, priv->qemuCaps)) < 0)
         goto error;
 
     /* if domain requests security driver we haven't loaded, report error, but
@@ -4878,7 +4878,7 @@ qemuProcessPrepareDomain(virConnectPtr conn,
      * use in hotplug
      */
     VIR_DEBUG("Assigning domain PCI addresses");
-    if ((qemuDomainAssignAddresses(vm->def, priv->qemuCaps, vm)) < 0)
+    if ((qemuDomainAssignAddresses(vm->def, priv->qemuCaps)) < 0)
         goto cleanup;
 
     if (qemuAssignDeviceAliases(vm->def, priv->qemuCaps) < 0)
@@ -6066,7 +6066,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
      * use in hotplug
      */
     VIR_DEBUG("Assigning domain PCI addresses");
-    if ((qemuDomainAssignAddresses(vm->def, priv->qemuCaps, vm)) < 0)
+    if ((qemuDomainAssignAddresses(vm->def, priv->qemuCaps)) < 0)
         goto error;
 
     if ((timestamp = virTimeStringNow()) == NULL)
diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c
index 13055ab..6d90a0c 100644
--- a/tests/qemuhotplugtest.c
+++ b/tests/qemuhotplugtest.c
@@ -86,7 +86,7 @@ qemuHotplugCreateObjects(virDomainXMLOptionPtr xmlopt,
                                                VIR_DOMAIN_DEF_PARSE_INACTIVE)))
         goto cleanup;
 
-    if (qemuDomainAssignAddresses((*vm)->def, priv->qemuCaps, *vm) < 0)
+    if (qemuDomainAssignAddresses((*vm)->def, priv->qemuCaps) < 0)
         goto cleanup;
 
     if (qemuAssignDeviceAliases((*vm)->def, priv->qemuCaps) < 0)
-- 
2.7.4 (Apple Git-66)




More information about the libvir-list mailing list