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(a)redhat.com>
---
src/conf/domain_conf.c | 42 ++++++++++++------------------------------
src/conf/domain_conf.h | 3 ++-
src/qemu/qemu_domain.c | 2 +-
3 files changed, 15 insertions(+), 32 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index d74ac2f1fb..bf3ad45397 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -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;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 0bdd6c0f55..0b6d432871 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -3472,7 +3472,8 @@ virDomainStorageSourceFormatFull(virBufferPtr buf,
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,
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index ea70979f8b..0a0a464dd2 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2726,7 +2726,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)) &&
--
2.20.1