Previously we had to check for 3 fields to see if the source was filled.
Repurpose one of the variables as a boolean flag and use it instead of
combining multiple sources.
For the condition that checks that only CDROM/FLOPPY drives can be empty
we can use the virStorageSourceIsEmpty() helper.
---
src/conf/domain_conf.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 127fc91..dee3a00 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5901,7 +5901,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
char *sgio = NULL;
char *driverName = NULL;
char *driverType = NULL;
- const char *source = NULL;
+ bool source = false;
char *target = NULL;
char *trans = NULL;
char *bus = NULL;
@@ -5965,13 +5965,13 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
cur = node->children;
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
- if (!source && !def->src->hosts &&
!def->src->srcpool &&
- xmlStrEqual(cur->name, BAD_CAST "source")) {
+ if (!source && xmlStrEqual(cur->name, BAD_CAST
"source")) {
sourceNode = cur;
if (virDomainDiskSourceParse(cur, ctxt, def->src) < 0)
goto error;
- source = def->src->path;
+
+ source = true;
if (def->src->type == VIR_STORAGE_TYPE_NETWORK) {
if (def->src->protocol == VIR_STORAGE_NET_PROTOCOL_ISCSI)
@@ -6398,7 +6398,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
/* Only CDROM and Floppy devices are allowed missing source path
* to indicate no media present. LUN is for raw access CD-ROMs
* that are not attached to a physical device presently */
- if (source == NULL && def->src->hosts == NULL &&
!def->src->srcpool &&
+ if (virStorageSourceIsEmpty(def->src) &&
(def->device == VIR_DOMAIN_DISK_DEVICE_DISK ||
(flags & VIR_DOMAIN_DEF_PARSE_DISK_SOURCE))) {
virReportError(VIR_ERR_NO_SOURCE,
@@ -6430,7 +6430,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
virReportError(VIR_ERR_NO_TARGET, "%s", tmp);
VIR_FREE(tmp);
} else {
- virReportError(VIR_ERR_NO_TARGET, source ? "%s" : NULL, source);
+ virReportError(VIR_ERR_NO_TARGET, def->src->path ? "%s" :
NULL, def->src->path);
}
goto error;
}
--
2.2.2