Unfortunately virDomainSnapshotLocation is declared in snapshot_conf.h
which includes domain_conf.h. To avoid a circular dependency use
'unsigned int' for now.
Use XML parser can use virXMLPropEnum.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/domain_conf.c | 15 +++------------
src/conf/domain_conf.h | 2 +-
2 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index da0e7700ff..6f7948da0a 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9313,7 +9313,6 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
VIR_XPATH_NODE_AUTORESTORE(ctxt)
bool source = false;
g_autofree char *tmp = NULL;
- g_autofree char *snapshot = NULL;
g_autofree char *target = NULL;
g_autofree char *bus = NULL;
g_autofree char *serial = NULL;
@@ -9349,7 +9348,9 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
VIR_XML_PROP_OPTIONAL, &def->model) < 0)
return NULL;
- snapshot = virXMLPropString(node, "snapshot");
+ if (virXMLPropEnum(node, "snapshot",
virDomainSnapshotLocationTypeFromString,
+ VIR_XML_PROP_OPTIONAL | VIR_XML_PROP_NONZERO,
&def->snapshot) < 0)
+ return NULL;
if (virXMLPropTristateBool(node, "rawio", VIR_XML_PROP_OPTIONAL,
&def->rawio) < 0)
return NULL;
@@ -9461,16 +9462,6 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
}
}
- if (snapshot) {
- def->snapshot = virDomainSnapshotLocationTypeFromString(snapshot);
- if (def->snapshot <= 0) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("unknown disk snapshot setting '%s'"),
- snapshot);
- return NULL;
- }
- }
-
if (bus) {
if ((def->bus = virDomainDiskBusTypeFromString(bus)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index a83d5b337f..17d830a822 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -573,7 +573,7 @@ struct _virDomainDiskDef {
virTristateSwitch ioeventfd;
virTristateSwitch event_idx;
virTristateSwitch copy_on_read;
- int snapshot; /* virDomainSnapshotLocation, snapshot_conf.h */
+ unsigned int snapshot; /* virDomainSnapshotLocation, snapshot_conf.h */
virDomainStartupPolicy startupPolicy;
bool transient;
virDomainDeviceInfo info;
--
2.30.2