[libvirt] [PATCH 2/2] Move vioserialaddrs from QEMU's private data to domainDef

Tomasz Flendrich t.flendrich at gmail.com
Sun Jun 19 17:04:01 UTC 2016


The end goal is to move all of the address types outside of QEMU's
private data and make the functions from qemu_domain_address.c
hypervisor-agnostic.
---
 src/conf/domain_conf.c         |  2 ++
 src/conf/domain_conf.h         |  2 ++
 src/qemu/qemu_domain.c         |  1 -
 src/qemu/qemu_domain.h         |  1 -
 src/qemu/qemu_domain_address.c | 20 ++++++++------------
 src/qemu/qemu_hotplug.c        |  9 +++++----
 6 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 6900eb9..13230c9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2705,6 +2705,8 @@ void virDomainDefFree(virDomainDefPtr def)
 
     xmlFreeNode(def->metadata);
 
+    virDomainVirtioSerialAddrSetFree(def->vioserialaddrs);
+
     VIR_FREE(def);
 }
 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 7dcecdc..2bac992 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2270,6 +2270,8 @@ struct _virDomainDef {
 
     virDomainKeyWrapDefPtr keywrap;
 
+    virDomainVirtioSerialAddrSetPtr vioserialaddrs;
+
     /* Application-specific custom metadata */
     xmlNodePtr metadata;
 };
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 595ad64..f6ccbc0 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1249,7 +1249,6 @@ qemuDomainObjPrivateFree(void *data)
     virCgroupFree(&priv->cgroup);
     virDomainPCIAddressSetFree(priv->pciaddrs);
     virDomainCCWAddressSetFree(priv->ccwaddrs);
-    virDomainVirtioSerialAddrSetFree(priv->vioserialaddrs);
     virDomainChrSourceDefFree(priv->monConfig);
     qemuDomainObjFreeJob(priv);
     VIR_FREE(priv->vcpupids);
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 2443e97..58221bb 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -189,7 +189,6 @@ struct _qemuDomainObjPrivate {
 
     virDomainPCIAddressSetPtr pciaddrs;
     virDomainCCWAddressSetPtr ccwaddrs;
-    virDomainVirtioSerialAddrSetPtr vioserialaddrs;
 
     virQEMUCapsPtr qemuCaps;
     char *lockState;
diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
index 883264a..1633c9b 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -107,13 +107,11 @@ qemuDomainSetSCSIControllerModel(const virDomainDef *def,
 
 
 static int
-qemuDomainAssignVirtioSerialAddresses(virDomainDefPtr def,
-                                      virDomainObjPtr obj)
+qemuDomainAssignVirtioSerialAddresses(virDomainDefPtr def)
 {
     int ret = -1;
     size_t i;
     virDomainVirtioSerialAddrSetPtr addrs = NULL;
-    qemuDomainObjPrivatePtr priv = NULL;
 
     if (!(addrs = virDomainVirtioSerialAddrSetCreate()))
         goto cleanup;
@@ -145,13 +143,11 @@ qemuDomainAssignVirtioSerialAddresses(virDomainDefPtr def,
             goto cleanup;
     }
 
-    if (obj && obj->privateData) {
-        priv = obj->privateData;
-        /* if this is the live domain object, we persist the addresses */
-        virDomainVirtioSerialAddrSetFree(priv->vioserialaddrs);
-        priv->vioserialaddrs = addrs;
-        addrs = NULL;
-    }
+    /* we persist the addresses */
+    virDomainVirtioSerialAddrSetFree(def->vioserialaddrs);
+    def->vioserialaddrs = addrs;
+    addrs = NULL;
+
     ret = 0;
 
  cleanup:
@@ -1630,7 +1626,7 @@ qemuDomainAssignAddresses(virDomainDefPtr def,
                           virQEMUCapsPtr qemuCaps,
                           virDomainObjPtr obj)
 {
-    if (qemuDomainAssignVirtioSerialAddresses(def, obj) < 0)
+    if (qemuDomainAssignVirtioSerialAddresses(def) < 0)
         return -1;
 
     if (qemuDomainAssignSpaprVIOAddresses(def, qemuCaps) < 0)
@@ -1670,7 +1666,7 @@ qemuDomainReleaseDeviceAddress(virDomainObjPtr vm,
         VIR_WARN("Unable to release PCI address on %s",
                  NULLSTR(devstr));
     if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL &&
-        virDomainVirtioSerialAddrRelease(priv->vioserialaddrs, info) < 0)
+        virDomainVirtioSerialAddrRelease(vm->def->vioserialaddrs, info) < 0)
         VIR_WARN("Unable to release virtio-serial address on %s",
                  NULLSTR(devstr));
 }
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 9aca853..696ec9e 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1457,12 +1457,13 @@ qemuDomainChrRemove(virDomainDefPtr vmdef,
 }
 
 static int
-qemuDomainAttachChrDeviceAssignAddr(qemuDomainObjPrivatePtr priv,
+qemuDomainAttachChrDeviceAssignAddr(virDomainDefPtr vmdef,
+                                    qemuDomainObjPrivatePtr priv,
                                     virDomainChrDefPtr chr)
 {
     if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
         chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO) {
-        if (virDomainVirtioSerialAddrAutoAssign(NULL, priv->vioserialaddrs,
+        if (virDomainVirtioSerialAddrAutoAssign(NULL, vmdef->vioserialaddrs,
                                                 &chr->info, true) < 0)
             return -1;
         return 1;
@@ -1475,7 +1476,7 @@ qemuDomainAttachChrDeviceAssignAddr(qemuDomainObjPrivatePtr priv,
 
     } else if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
                chr->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO) {
-        if (virDomainVirtioSerialAddrAutoAssign(NULL, priv->vioserialaddrs,
+        if (virDomainVirtioSerialAddrAutoAssign(NULL, vmdef->vioserialaddrs,
                                                 &chr->info, false) < 0)
             return -1;
         return 1;
@@ -1509,7 +1510,7 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver,
     if (qemuAssignDeviceChrAlias(vmdef, chr, -1) < 0)
         goto cleanup;
 
-    if ((rc = qemuDomainAttachChrDeviceAssignAddr(priv, chr)) < 0)
+    if ((rc = qemuDomainAttachChrDeviceAssignAddr(vmdef, priv, chr)) < 0)
         goto cleanup;
     if (rc == 1)
         need_release = true;
-- 
2.7.4 (Apple Git-66)




More information about the libvir-list mailing list