Signed-off-by: Ryan Gahagan <rgahagan(a)cs.utexas.edu>
---
src/conf/domain_conf.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b301ac0a08..565ca680c9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -6888,6 +6888,23 @@ virDomainStorageNetworkParseHosts(xmlNodePtr node,
}
+static void
+virDomainStorageNetworkParseNFS(xmlNodePtr node,
+ xmlXPathContextPtr ctxt,
+ virStorageSourcePtr src)
+{
+ xmlNodePtr nfsnode = NULL;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
+
+ ctxt->node = node;
+
+ if ((nfsnode = virXPathNode("./nfs", ctxt))) {
+ src->nfs_user = virXMLPropString(nfsnode, "user");
+ src->nfs_group = virXMLPropString(nfsnode, "group");
+ }
+}
+
+
static int
virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
xmlXPathContextPtr ctxt,
@@ -8252,6 +8269,9 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
if (virDomainStorageNetworkParseHosts(node, ctxt, &src->hosts,
&src->nhosts) < 0)
return -1;
+ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NFS)
+ virDomainStorageNetworkParseNFS(node, ctxt, src);
+
virStorageSourceNetworkAssignDefaultPorts(src);
virStorageSourceInitiatorParseXML(ctxt, &src->initiator);
@@ -23805,6 +23825,19 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
virBufferAddLit(childBuf, "/>\n");
}
+ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NFS &&
+ (src->nfs_user || src->nfs_group)) {
+ virBufferAddLit(childBuf, "<nfs");
+
+ if (src->nfs_user)
+ virBufferEscapeString(childBuf, " user='%s'",
src->nfs_user);
+ if (src->nfs_group)
+ virBufferEscapeString(childBuf, " group='%s'",
src->nfs_group);
+
+ virBufferAddLit(childBuf, "/>\n");
+ }
+
+
virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n",
src->snapshot);
virBufferEscapeString(childBuf, "<config file='%s'/>\n",
src->configFile);
--
2.29.2