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)