]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Fold private data parsing into virDomainStorageSourceParse
authorPeter Krempa <pkrempa@redhat.com>
Fri, 15 Mar 2019 15:33:38 +0000 (16:33 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 20 Mar 2019 14:00:17 +0000 (15:00 +0100)
Storage source private data can be parsed along with other components of
private data rather than a separate function which is called from
multiple places.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_domain.c

index 0370eed120d959a3a3c86b5102fb72a0dc75765f..9d8eabb42afbf2420207ae39cb7178c83bc71de1 100644 (file)
@@ -9020,31 +9020,6 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
 }
 
 
-static int
-virDomainDiskSourcePrivateDataParse(xmlNodePtr node,
-                                    xmlXPathContextPtr ctxt,
-                                    virStorageSourcePtr src,
-                                    unsigned int flags,
-                                    virDomainXMLOptionPtr xmlopt)
-{
-    VIR_XPATH_NODE_AUTORESTORE(ctxt);
-
-    if (!(flags & VIR_DOMAIN_DEF_PARSE_STATUS) ||
-        !xmlopt || !xmlopt->privateData.storageParse)
-        return 0;
-
-    ctxt->node = node;
-
-    if (!(ctxt->node = virXPathNode("./privateData", ctxt)))
-        return 0;
-
-    if (xmlopt->privateData.storageParse(ctxt, src) < 0)
-        return -1;
-
-    return 0;
-}
-
-
 static int
 virDomainDiskSourcePRParse(xmlNodePtr node,
                            xmlXPathContextPtr ctxt,
@@ -9068,7 +9043,8 @@ int
 virDomainStorageSourceParse(xmlNodePtr node,
                             xmlXPathContextPtr ctxt,
                             virStorageSourcePtr src,
-                            unsigned int flags)
+                            unsigned int flags,
+                            virDomainXMLOptionPtr xmlopt)
 {
     VIR_XPATH_NODE_AUTORESTORE(ctxt);
     xmlNodePtr tmp;
@@ -9122,6 +9098,15 @@ virDomainStorageSourceParse(xmlNodePtr node,
     if (src->path && !*src->path)
         VIR_FREE(src->path);
 
+    if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) &&
+        xmlopt && xmlopt->privateData.storageParse &&
+        (tmp = virXPathNode("./privateData", ctxt))) {
+        ctxt->node = tmp;
+
+        if (xmlopt->privateData.storageParse(ctxt, src) < 0)
+            return -1;
+    }
+
     return 0;
 }
 
@@ -9133,10 +9118,7 @@ virDomainDiskSourceParse(xmlNodePtr node,
                          unsigned int flags,
                          virDomainXMLOptionPtr xmlopt)
 {
-    if (virDomainStorageSourceParse(node, ctxt, src, flags) < 0)
-        return -1;
-
-    if (virDomainDiskSourcePrivateDataParse(node, ctxt, src, flags, xmlopt) < 0)
+    if (virDomainStorageSourceParse(node, ctxt, src, flags, xmlopt) < 0)
         return -1;
 
     return 0;
index cad330715ba3eca207f1c31e2b506cec5dcd71b2..49b0803c532846371b561ae833086914004833d3 100644 (file)
@@ -3467,7 +3467,8 @@ int virDomainStorageSourceFormat(virBufferPtr attrBuf,
 int virDomainStorageSourceParse(xmlNodePtr node,
                                 xmlXPathContextPtr ctxt,
                                 virStorageSourcePtr src,
-                                unsigned int flags)
+                                unsigned int flags,
+                                virDomainXMLOptionPtr xmlopt)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
 
 int virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def,
index 341ea7d37cb546dd7ee1c3800b94a934adb24ba6..71fbc8f2a29c9bfad2be38b4ed15e9a7687e11b0 100644 (file)
@@ -2760,7 +2760,7 @@ qemuDomainObjPrivateXMLParseJobNBDSource(xmlNodePtr node,
     }
 
     if (virDomainStorageSourceParse(ctxt->node, ctxt, migrSource,
-                                    VIR_DOMAIN_DEF_PARSE_STATUS) < 0)
+                                    VIR_DOMAIN_DEF_PARSE_STATUS, NULL) < 0)
         goto cleanup;
 
     if ((ctxt->node = virXPathNode("./privateData", ctxt)) &&