From fee89d5de8520422225dc06fa95cc2dad66d7ebe Mon Sep 17 00:00:00 2001 Message-Id: From: Peter Krempa Date: Mon, 13 Nov 2017 13:25:01 +0100 Subject: [PATCH] conf: Properly parse The terminator would not be parsed properly since the XPath selector was looking for an populated element, and also the code did not bother assigning the terminating virStorageSourcePtr to the backingStore property of the parent. Some tests would catch it if there wasn't bigger fallout from the change to backing store termination in a693fdba0111. Fix them properly now. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1509110 (cherry picked from commit 19448a2561699807c075e071a45df292efd01f6b) Signed-off-by: Jiri Denemark --- src/conf/domain_conf.c | 18 ++++++++---------- ...base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml | 1 + .../qemuxml2xmlout-disk-active-commit.xml | 1 + .../qemuxml2xmlout-disk-backing-chains-active.xml | 3 +++ .../qemuxml2xmlout-disk-mirror-active.xml | 4 ++++ .../qemuxml2xmlout-disk-mirror-old.xml | 4 ++++ .../qemuxml2xmlout-seclabel-static-labelskip.xml | 1 + 7 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 27cfecffda..3b337d1a64 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8539,16 +8539,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, char *idx = NULL; int ret = -1; - if (!(ctxt->node = virXPathNode("./backingStore[*]", ctxt))) { - ret = 0; - goto cleanup; - } - - if (!(type = virXMLPropString(ctxt->node, "type"))) { - /* terminator does not have a type */ - if (VIR_ALLOC(backingStore) < 0) - goto cleanup; - + if (!(ctxt->node = virXPathNode("./backingStore", ctxt))) { ret = 0; goto cleanup; } @@ -8556,6 +8547,13 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, if (VIR_ALLOC(backingStore) < 0) goto cleanup; + /* terminator does not have a type */ + if (!(type = virXMLPropString(ctxt->node, "type"))) { + VIR_STEAL_PTR(src->backingStore, backingStore); + ret = 0; + goto cleanup; + } + if (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && (idx = virXMLPropString(ctxt->node, "index")) && virStrToLong_uip(idx, NULL, 10, &backingStore->id) < 0) { diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml index 9482b6794a..16caeb3542 100644 --- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml +++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml @@ -22,6 +22,7 @@ + diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-active-commit.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-active-commit.xml index 5766e4aea8..cc26af1096 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-active-commit.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-active-commit.xml @@ -20,6 +20,7 @@ + diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-backing-chains-active.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-backing-chains-active.xml index 828defcc25..d1fd2442c3 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-backing-chains-active.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-backing-chains-active.xml @@ -49,6 +49,7 @@ + @@ -63,6 +64,7 @@ +
@@ -79,6 +81,7 @@ +
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-active.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-active.xml index 252bde3389..c1e8a33ec1 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-active.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-active.xml @@ -16,6 +16,7 @@ /usr/bin/qemu-system-i686 + @@ -24,12 +25,14 @@ +
+ @@ -39,6 +42,7 @@ + diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-old.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-old.xml index f4bd39a580..e390bc02f2 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-old.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-old.xml @@ -16,6 +16,7 @@ /usr/bin/qemu-system-i686 + @@ -24,12 +25,14 @@ +
+ @@ -39,6 +42,7 @@ +
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-static-labelskip.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-static-labelskip.xml index 91f573db7d..d37b950cbf 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-static-labelskip.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-static-labelskip.xml @@ -18,6 +18,7 @@ +
-- 2.15.0