You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
7.6 KiB
198 lines
7.6 KiB
From d75cae45933638648d772a5e5f140017b83c019c Mon Sep 17 00:00:00 2001 |
|
From: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> |
|
Date: Mon, 14 Oct 2013 17:29:44 +0200 |
|
Subject: [PATCH 29/60] VSMS: Improve device cleanup |
|
|
|
Use cleanup_virt_device instead of single free's all over |
|
the place in net_rasd_to_vdev and disk_rasd_to_vdev. |
|
Further, make sure that the device type is always set |
|
independent of the implementation of the xxx_rasd_to_vdev |
|
functions. |
|
|
|
Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> |
|
Signed-off-by: John Ferlan <jferlan@redhat.com> |
|
--- |
|
src/Virt_VirtualSystemManagementService.c | 35 +++++++------------------------ |
|
1 file changed, 8 insertions(+), 27 deletions(-) |
|
|
|
diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c |
|
index b813be6..6548d08 100644 |
|
--- a/src/Virt_VirtualSystemManagementService.c |
|
+++ b/src/Virt_VirtualSystemManagementService.c |
|
@@ -964,17 +964,15 @@ static const char *net_rasd_to_vdev(CMPIInstance *inst, |
|
} |
|
*/ |
|
|
|
- free(dev->dev.net.mac); |
|
+ cleanup_virt_device(dev); |
|
+ |
|
dev->dev.net.mac = strdup(val); |
|
|
|
- free(dev->id); |
|
dev->id = strdup(dev->dev.net.mac); |
|
|
|
- free(dev->dev.net.type); |
|
if (cu_get_str_prop(inst, "NetworkType", &val) != CMPI_RC_OK) |
|
return "No Network Type specified"; |
|
|
|
- free(dev->dev.net.source); |
|
if (STREQC(val, BRIDGE_TYPE)) { |
|
dev->dev.net.type = strdup(BRIDGE_TYPE); |
|
if (cu_get_str_prop(inst, "NetworkName", &val) == CMPI_RC_OK) |
|
@@ -1011,44 +1009,37 @@ static const char *net_rasd_to_vdev(CMPIInstance *inst, |
|
else |
|
return "No Source Device specified"; |
|
|
|
- free(dev->dev.net.vsi.vsi_type); |
|
if (cu_get_str_prop(inst, "VSIType", &val) != CMPI_RC_OK) |
|
dev->dev.net.vsi.vsi_type = NULL; |
|
else |
|
dev->dev.net.vsi.vsi_type = strdup(val); |
|
|
|
- free(dev->dev.net.vsi.manager_id); |
|
if (cu_get_str_prop(inst, "VSIManagerID", &val) != CMPI_RC_OK) |
|
dev->dev.net.vsi.manager_id = NULL; |
|
else |
|
dev->dev.net.vsi.manager_id = strdup(val); |
|
|
|
- free(dev->dev.net.vsi.type_id); |
|
if (cu_get_str_prop(inst, "VSITypeID", &val) != CMPI_RC_OK) |
|
dev->dev.net.vsi.type_id = NULL; |
|
else |
|
dev->dev.net.vsi.type_id = strdup(val); |
|
|
|
- free(dev->dev.net.vsi.type_id_version); |
|
if (cu_get_str_prop(inst, "VSITypeIDVersion", &val) != |
|
CMPI_RC_OK) |
|
dev->dev.net.vsi.type_id_version = NULL; |
|
else |
|
dev->dev.net.vsi.type_id_version = strdup(val); |
|
|
|
- free(dev->dev.net.vsi.instance_id); |
|
if (cu_get_str_prop(inst, "VSIInstanceID", &val) != CMPI_RC_OK) |
|
dev->dev.net.vsi.instance_id = NULL; |
|
else |
|
dev->dev.net.vsi.instance_id = strdup(val); |
|
|
|
- free(dev->dev.net.vsi.filter_ref); |
|
if (cu_get_str_prop(inst, "FilterRef", &val) != CMPI_RC_OK) |
|
dev->dev.net.vsi.filter_ref = NULL; |
|
else |
|
dev->dev.net.vsi.filter_ref = strdup(val); |
|
|
|
- free(dev->dev.net.vsi.profile_id); |
|
if (cu_get_str_prop(inst, "ProfileID", &val) != CMPI_RC_OK) |
|
dev->dev.net.vsi.profile_id = NULL; |
|
else |
|
@@ -1057,20 +1048,16 @@ static const char *net_rasd_to_vdev(CMPIInstance *inst, |
|
} else |
|
return "Invalid Network Type specified"; |
|
|
|
- free(dev->dev.net.device); |
|
if (cu_get_str_prop(inst, "VirtualDevice", &val) != CMPI_RC_OK) |
|
dev->dev.net.device = NULL; |
|
else |
|
dev->dev.net.device = strdup(val); |
|
|
|
- free(dev->dev.net.net_mode); |
|
if (cu_get_str_prop(inst, "NetworkMode", &val) != CMPI_RC_OK) |
|
dev->dev.net.net_mode = NULL; |
|
else |
|
dev->dev.net.net_mode = strdup(val); |
|
|
|
- free(dev->dev.net.model); |
|
- |
|
if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) |
|
dev->dev.net.model = NULL; |
|
else |
|
@@ -1106,13 +1093,13 @@ static const char *disk_rasd_to_vdev(CMPIInstance *inst, |
|
if (cu_get_str_prop(inst, "VirtualDevice", &val) != CMPI_RC_OK) |
|
return "Missing `VirtualDevice' property"; |
|
|
|
- free(dev->dev.disk.virtual_dev); |
|
+ cleanup_virt_device(dev); |
|
+ |
|
dev->dev.disk.virtual_dev = strdup(val); |
|
|
|
if (cu_get_str_prop(inst, "Address", &val) != CMPI_RC_OK) |
|
val = "/dev/null"; |
|
|
|
- free(dev->dev.disk.source); |
|
dev->dev.disk.source = strdup(val); |
|
if (dev->dev.disk.source == NULL) { |
|
return "dev->dev.disk.source is null!"; |
|
@@ -1149,7 +1136,6 @@ static const char *disk_rasd_to_vdev(CMPIInstance *inst, |
|
} |
|
if (XSTREQ(dev->dev.disk.source, "/dev/null")) { |
|
dev->dev.disk.disk_type = DISK_FILE; |
|
- free(dev->dev.disk.source); |
|
dev->dev.disk.source = strdup(""); |
|
} |
|
|
|
@@ -1170,31 +1156,26 @@ static const char *disk_rasd_to_vdev(CMPIInstance *inst, |
|
else |
|
dev->dev.disk.readonly = read; |
|
|
|
- free(dev->dev.disk.bus_type); |
|
if (cu_get_str_prop(inst, "BusType", &val) != CMPI_RC_OK) |
|
dev->dev.disk.bus_type = NULL; |
|
else |
|
dev->dev.disk.bus_type = strdup(val); |
|
|
|
- free(dev->dev.disk.driver); |
|
if (cu_get_str_prop(inst, "DriverName", &val) != CMPI_RC_OK) |
|
dev->dev.disk.driver = NULL; |
|
else |
|
dev->dev.disk.driver = strdup(val); |
|
|
|
- free(dev->dev.disk.driver_type); |
|
if (cu_get_str_prop(inst, "DriverType", &val) != CMPI_RC_OK) |
|
dev->dev.disk.driver_type = NULL; |
|
else |
|
dev->dev.disk.driver_type = strdup(val); |
|
|
|
- free(dev->dev.disk.cache); |
|
if (cu_get_str_prop(inst, "DriverCache", &val) != CMPI_RC_OK) |
|
dev->dev.disk.cache = NULL; |
|
else |
|
dev->dev.disk.cache = strdup(val); |
|
|
|
- free(dev->dev.disk.access_mode); |
|
if (cu_get_str_prop(inst, "AccessMode", &val) != CMPI_RC_OK) |
|
dev->dev.disk.access_mode = NULL; |
|
else |
|
@@ -1205,7 +1186,6 @@ static const char *disk_rasd_to_vdev(CMPIInstance *inst, |
|
else |
|
dev->dev.disk.shareable = shareable; |
|
|
|
- free(dev->id); |
|
dev->id = strdup(dev->dev.disk.virtual_dev); |
|
|
|
msg = rasd_to_device_address(inst, &dev->dev.disk.address); |
|
@@ -1921,12 +1901,14 @@ static const char *rasd_to_vdev(CMPIInstance *inst, |
|
goto out; |
|
} |
|
|
|
- dev->type = (int)type; |
|
- |
|
if (domain->type == DOMAIN_LXC) |
|
msg = _container_rasd_to_vdev(inst, dev, type, ns); |
|
else |
|
msg = _sysvirt_rasd_to_vdev(inst, dev, type, ns, p_error); |
|
+ |
|
+ /* ensure device type is set */ |
|
+ if (msg == NULL) |
|
+ dev->type = type; |
|
out: |
|
if (msg && op) |
|
CU_DEBUG("rasd_to_vdev(%s): %s", CLASSNAME(op), msg); |
|
@@ -3112,7 +3094,6 @@ static CMPIStatus resource_add(struct domain *dominfo, |
|
|
|
dev = &list[*count]; |
|
|
|
- dev->type = type; |
|
msg = rasd_to_vdev(rasd, dominfo, dev, ns, &error_msg); |
|
if (msg != NULL) { |
|
cu_statusf(_BROKER, &s, |
|
-- |
|
2.1.0
|
|
|