All callers except the one in the 'esx' driver pass the flag. The 'esx'
driver has a check that 'def->ndisks' is zero after parsing the
definition. This means that we can simply always parse the disks.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/snapshot_conf.c | 22 ++++++++--------------
src/conf/snapshot_conf.h | 7 +++----
src/qemu/qemu_driver.c | 1 -
src/qemu/qemu_snapshot.c | 2 +-
src/test/test_driver.c | 3 +--
src/vbox/vbox_common.c | 4 +---
src/vz/vz_driver.c | 2 +-
tests/qemudomainsnapshotxml2xmltest.c | 2 +-
8 files changed, 16 insertions(+), 27 deletions(-)
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index f5ae2ee212..f477b67785 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -359,21 +359,15 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt,
if ((n = virXPathNodeSet("./disks/*", ctxt, &nodes)) < 0)
goto cleanup;
- if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_DISKS) {
- if (n)
- def->disks = g_new0(virDomainSnapshotDiskDef, n);
- def->ndisks = n;
- for (i = 0; i < def->ndisks; i++) {
- if (virDomainSnapshotDiskDefParseXML(nodes[i], ctxt, &def->disks[i],
- flags, xmlopt) < 0)
- goto cleanup;
- }
- VIR_FREE(nodes);
- } else if (n) {
- virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
- _("unable to handle disk requests in snapshot"));
- goto cleanup;
+ if (n)
+ def->disks = g_new0(virDomainSnapshotDiskDef, n);
+ def->ndisks = n;
+ for (i = 0; i < def->ndisks; i++) {
+ if (virDomainSnapshotDiskDefParseXML(nodes[i], ctxt, &def->disks[i],
+ flags, xmlopt) < 0)
+ goto cleanup;
}
+ VIR_FREE(nodes);
if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL) {
if (!current) {
diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h
index b7e0d441ff..8823af1ac1 100644
--- a/src/conf/snapshot_conf.h
+++ b/src/conf/snapshot_conf.h
@@ -84,10 +84,9 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainSnapshotDef, virObjectUnref);
typedef enum {
VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE = 1 << 0,
- VIR_DOMAIN_SNAPSHOT_PARSE_DISKS = 1 << 1,
- VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL = 1 << 2,
- VIR_DOMAIN_SNAPSHOT_PARSE_OFFLINE = 1 << 3,
- VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE = 1 << 4,
+ VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL = 1 << 1,
+ VIR_DOMAIN_SNAPSHOT_PARSE_OFFLINE = 1 << 2,
+ VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE = 1 << 3,
} virDomainSnapshotParseFlags;
typedef enum {
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c1b3bd8536..de7d2b93b9 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -347,7 +347,6 @@ qemuDomainSnapshotLoad(virDomainObj *vm,
virDomainMomentObj *current = NULL;
bool cur;
unsigned int flags = (VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE |
- VIR_DOMAIN_SNAPSHOT_PARSE_DISKS |
VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL);
int ret = -1;
int direrr;
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
index c5fc7dcf67..3fb1d3abe0 100644
--- a/src/qemu/qemu_snapshot.c
+++ b/src/qemu/qemu_snapshot.c
@@ -1530,7 +1530,7 @@ qemuSnapshotCreateXMLParse(virDomainObj *vm,
unsigned int flags)
{
qemuDomainObjPrivate *priv = vm->privateData;
- unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
+ unsigned int parse_flags = 0;
if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE)
parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE;
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index da1c6c8f6e..9ceb0b45c8 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -978,7 +978,6 @@ testParseDomainSnapshots(testDriver *privconn,
privconn->xmlopt,
NULL,
&cur,
- VIR_DOMAIN_SNAPSHOT_PARSE_DISKS |
VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL |
VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE);
if (!def)
@@ -8777,7 +8776,7 @@ testDomainSnapshotCreateXML(virDomainPtr domain,
virObjectEvent *event = NULL;
bool update_current = true;
bool redefine = flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE;
- unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
+ unsigned int parse_flags = 0;
g_autoptr(virDomainSnapshotDef) def = NULL;
/*
diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index 36db6e06be..acd18494d3 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -5364,8 +5364,7 @@ vboxDomainSnapshotCreateXML(virDomainPtr dom,
nsresult rc;
resultCodeUnion result;
virDomainSnapshotPtr ret = NULL;
- unsigned int parse_flags = (VIR_DOMAIN_SNAPSHOT_PARSE_DISKS |
- VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE);
+ unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE;
g_autoptr(virDomainSnapshotDef) def = NULL;
if (!data->vboxObj)
@@ -6783,7 +6782,6 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapshotPtr snapshot)
}
def = virDomainSnapshotDefParseString(defXml,
data->xmlopt, NULL, NULL,
- VIR_DOMAIN_SNAPSHOT_PARSE_DISKS |
VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE);
if (!def) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index fdd776282e..2107785ab2 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -2580,7 +2580,7 @@ vzDomainSnapshotCreateXML(virDomainPtr domain,
virDomainObj *dom;
struct _vzConn *privconn = domain->conn->privateData;
struct _vzDriver *driver = privconn->driver;
- unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
+ unsigned int parse_flags = 0;
virDomainSnapshotObjList *snapshots = NULL;
virDomainMomentObj *current;
bool job = false;
diff --git a/tests/qemudomainsnapshotxml2xmltest.c
b/tests/qemudomainsnapshotxml2xmltest.c
index 735d0e21a1..3fa932e755 100644
--- a/tests/qemudomainsnapshotxml2xmltest.c
+++ b/tests/qemudomainsnapshotxml2xmltest.c
@@ -34,7 +34,7 @@ testCompareXMLToXMLFiles(const char *inxml,
g_autofree char *inXmlData = NULL;
g_autofree char *outXmlData = NULL;
g_autofree char *actual = NULL;
- unsigned int parseflags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
+ unsigned int parseflags = 0;
unsigned int formatflags = VIR_DOMAIN_SNAPSHOT_FORMAT_SECURE;
bool cur = false;
g_autoptr(virDomainSnapshotDef) def = NULL;
--
2.35.1