[libvirt] [PATCH 09/10] conf: Extract parsing of storage source related data

Peter Krempa pkrempa at redhat.com
Tue Mar 13 14:37:35 UTC 2018


Split out the parser and separate it from the private data part so that
it can be later reused in other parts of the code.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/conf/domain_conf.c | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index d1ff80feb7..86fc275116 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8554,24 +8554,26 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,


 static int
-virDomainDiskSourcePrivateDataParse(xmlXPathContextPtr ctxt,
+virDomainDiskSourcePrivateDataParse(xmlNodePtr node,
+                                    xmlXPathContextPtr ctxt,
                                     virStorageSourcePtr src,
                                     unsigned int flags,
                                     virDomainXMLOptionPtr xmlopt)
 {
     xmlNodePtr saveNode = ctxt->node;
-    xmlNodePtr node;
     int ret = -1;

     if (!(flags & VIR_DOMAIN_DEF_PARSE_STATUS) ||
         !xmlopt || !xmlopt->privateData.storageParse)
         return 0;

-    if (!(node = virXPathNode("./privateData", ctxt)))
-        return 0;
-
     ctxt->node = node;

+    if (!(ctxt->node = virXPathNode("./privateData", ctxt))) {
+        ret = 0;
+        goto cleanup;
+    }
+
     if (xmlopt->privateData.storageParse(ctxt, src) < 0)
         goto cleanup;

@@ -8584,12 +8586,11 @@ virDomainDiskSourcePrivateDataParse(xmlXPathContextPtr ctxt,
 }


-int
-virDomainDiskSourceParse(xmlNodePtr node,
-                         xmlXPathContextPtr ctxt,
-                         virStorageSourcePtr src,
-                         unsigned int flags,
-                         virDomainXMLOptionPtr xmlopt)
+static int
+virDomainStorageSourceParse(xmlNodePtr node,
+                            xmlXPathContextPtr ctxt,
+                            virStorageSourcePtr src,
+                            unsigned int flags)
 {
     int ret = -1;
     xmlNodePtr saveNode = ctxt->node;
@@ -8635,9 +8636,6 @@ virDomainDiskSourceParse(xmlNodePtr node,
                                           ctxt, flags) < 0)
         goto cleanup;

-    if (virDomainDiskSourcePrivateDataParse(ctxt, src, flags, xmlopt) < 0)
-        goto cleanup;
-
     /* People sometimes pass a bogus '' source path when they mean to omit the
      * source element completely (e.g. CDROM without media). This is just a
      * little compatibility check to help those broken apps */
@@ -8652,6 +8650,23 @@ virDomainDiskSourceParse(xmlNodePtr node,
 }


+int
+virDomainDiskSourceParse(xmlNodePtr node,
+                         xmlXPathContextPtr ctxt,
+                         virStorageSourcePtr src,
+                         unsigned int flags,
+                         virDomainXMLOptionPtr xmlopt)
+{
+    if (virDomainStorageSourceParse(node, ctxt, src, flags) < 0)
+        return -1;
+
+    if (virDomainDiskSourcePrivateDataParse(node, ctxt, src, flags, xmlopt) < 0)
+        return -1;
+
+    return 0;
+}
+
+
 static int
 virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
                                virStorageSourcePtr src,
-- 
2.16.2




More information about the libvir-list mailing list