Separate the steps of parsing the memory snapshot config from the
post-processing and validation code. The upcoming patch refactoring the
parsing will be simpler.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/snapshot_conf.c | 50 ++++++++++++++++++++++++----------------
1 file changed, 30 insertions(+), 20 deletions(-)
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index 7f98ae6aec..594492ccd2 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -317,27 +317,37 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt,
memorySnapshot);
return NULL;
}
- if (def->memorysnapshotfile &&
- def->memory != VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
- virReportError(VIR_ERR_XML_ERROR,
- _("memory filename '%s' requires external
snapshot"),
- def->memorysnapshotfile);
- return NULL;
- }
- if (!def->memorysnapshotfile &&
- def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("external memory snapshots require a filename"));
- return NULL;
+ }
+
+ if (def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_DEFAULT) {
+ if (def->memorysnapshotfile) {
+ def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL;
+ } else if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE) {
+ if (offline) {
+ def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_NO;
+ } else {
+ def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL;
+ }
}
- } else if (def->memorysnapshotfile) {
- def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL;
- } else if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE) {
- def->memory = (offline ?
- VIR_DOMAIN_SNAPSHOT_LOCATION_NO :
- VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL);
- }
- if (offline && def->memory &&
+ }
+
+ if (def->memorysnapshotfile &&
+ def->memory != VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("memory filename '%s' requires external
snapshot"),
+ def->memorysnapshotfile);
+ return NULL;
+ }
+
+ if (!def->memorysnapshotfile &&
+ def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("external memory snapshots require a filename"));
+ return NULL;
+ }
+
+ if (offline &&
+ def->memory != VIR_DOMAIN_SNAPSHOT_LOCATION_DEFAULT &&
def->memory != VIR_DOMAIN_SNAPSHOT_LOCATION_NO) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("memory state cannot be saved with offline or "
--
2.35.1