-1 is just an internal placeholder and is meaningless to output in the XML.
---
docs/schemas/storagecommon.rng | 28 ++++++++++++----------
src/conf/storage_conf.c | 23 +++++++++++-------
tests/storagepoolxml2xmlout/pool-dir-naming.xml | 2 --
tests/storagepoolxml2xmlout/pool-dir.xml | 2 --
tests/storagepoolxml2xmlout/pool-netfs-gluster.xml | 2 --
.../vol-gluster-dir-neg-uid.xml | 2 --
tests/storagevolxml2xmlout/vol-gluster-dir.xml | 2 --
tests/storagevolxml2xmlout/vol-sheepdog.xml | 2 --
8 files changed, 30 insertions(+), 33 deletions(-)
diff --git a/docs/schemas/storagecommon.rng b/docs/schemas/storagecommon.rng
index 5f71b10..6f7d369 100644
--- a/docs/schemas/storagecommon.rng
+++ b/docs/schemas/storagecommon.rng
@@ -101,18 +101,22 @@
<element name='mode'>
<ref name='octalMode'/>
</element>
- <element name='owner'>
- <choice>
- <ref name='unsignedInt'/>
- <value>-1</value>
- </choice>
- </element>
- <element name='group'>
- <choice>
- <ref name='unsignedInt'/>
- <value>-1</value>
- </choice>
- </element>
+ <optional>
+ <element name='owner'>
+ <choice>
+ <ref name='unsignedInt'/>
+ <value>-1</value>
+ </choice>
+ </element>
+ </optional>
+ <optional>
+ <element name='group'>
+ <choice>
+ <ref name='unsignedInt'/>
+ <value>-1</value>
+ </choice>
+ </element>
+ </optional>
<optional>
<element name='label'>
<text/>
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 4852dfb..99962b7 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -759,6 +759,7 @@ virStorageDefParsePerms(xmlXPathContextPtr ctxt,
if (virXPathNode("./owner", ctxt) == NULL) {
perms->uid = (uid_t) -1;
} else {
+ /* We previously could output -1, so continue to parse it */
if (virXPathLongLong("number(./owner)", ctxt, &val) < 0 ||
((uid_t)val != val &&
val != -1)) {
@@ -773,6 +774,7 @@ virStorageDefParsePerms(xmlXPathContextPtr ctxt,
if (virXPathNode("./group", ctxt) == NULL) {
perms->gid = (gid_t) -1;
} else {
+ /* We previously could output -1, so continue to parse it */
if (virXPathLongLong("number(./group)", ctxt, &val) < 0 ||
((gid_t) val != val &&
val != -1)) {
@@ -1187,10 +1189,12 @@ virStoragePoolDefFormatBuf(virBufferPtr buf,
virBufferAdjustIndent(buf, 2);
virBufferAsprintf(buf, "<mode>0%o</mode>\n",
def->target.perms.mode);
- virBufferAsprintf(buf, "<owner>%d</owner>\n",
- (int) def->target.perms.uid);
- virBufferAsprintf(buf, "<group>%d</group>\n",
- (int) def->target.perms.gid);
+ if (def->target.perms.uid != (uid_t) -1)
+ virBufferAsprintf(buf, "<owner>%d</owner>\n",
+ (int) def->target.perms.uid);
+ if (def->target.perms.gid != (gid_t) -1)
+ virBufferAsprintf(buf, "<group>%d</group>\n",
+ (int) def->target.perms.gid);
virBufferEscapeString(buf, "<label>%s</label>\n",
def->target.perms.label);
@@ -1522,11 +1526,12 @@ virStorageVolTargetDefFormat(virStorageVolOptionsPtr options,
virBufferAsprintf(buf, "<mode>0%o</mode>\n",
def->perms->mode);
- virBufferAsprintf(buf, "<owner>%d</owner>\n",
- (int) def->perms->uid);
- virBufferAsprintf(buf, "<group>%d</group>\n",
- (int) def->perms->gid);
-
+ if (def->perms->uid != (uid_t) -1)
+ virBufferAsprintf(buf, "<owner>%d</owner>\n",
+ (int) def->perms->uid);
+ if (def->perms->gid != (gid_t) -1)
+ virBufferAsprintf(buf, "<group>%d</group>\n",
+ (int) def->perms->gid);
virBufferEscapeString(buf, "<label>%s</label>\n",
def->perms->label);
diff --git a/tests/storagepoolxml2xmlout/pool-dir-naming.xml
b/tests/storagepoolxml2xmlout/pool-dir-naming.xml
index 536f58c..dd6d9b8 100644
--- a/tests/storagepoolxml2xmlout/pool-dir-naming.xml
+++ b/tests/storagepoolxml2xmlout/pool-dir-naming.xml
@@ -10,8 +10,6 @@
<path>/var/lib/libvirt/<images></path>
<permissions>
<mode>0700</mode>
- <owner>-1</owner>
- <group>-1</group>
<label>some_label_t</label>
</permissions>
</target>
diff --git a/tests/storagepoolxml2xmlout/pool-dir.xml
b/tests/storagepoolxml2xmlout/pool-dir.xml
index f81bc1d..2054871 100644
--- a/tests/storagepoolxml2xmlout/pool-dir.xml
+++ b/tests/storagepoolxml2xmlout/pool-dir.xml
@@ -10,8 +10,6 @@
<path>/var/lib/libvirt/images</path>
<permissions>
<mode>0700</mode>
- <owner>-1</owner>
- <group>-1</group>
<label>some_label_t</label>
</permissions>
</target>
diff --git a/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
b/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
index bab2a15..90143f9 100644
--- a/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
+++ b/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
@@ -13,8 +13,6 @@
<path>/mnt/gluster</path>
<permissions>
<mode>0755</mode>
- <owner>-1</owner>
- <group>-1</group>
</permissions>
</target>
</pool>
diff --git a/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
b/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
index 538b31d..0af0be1 100644
--- a/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
+++ b/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
@@ -10,8 +10,6 @@
<format type='dir'/>
<permissions>
<mode>0600</mode>
- <owner>-1</owner>
- <group>-1</group>
</permissions>
</target>
</volume>
diff --git a/tests/storagevolxml2xmlout/vol-gluster-dir.xml
b/tests/storagevolxml2xmlout/vol-gluster-dir.xml
index 538b31d..0af0be1 100644
--- a/tests/storagevolxml2xmlout/vol-gluster-dir.xml
+++ b/tests/storagevolxml2xmlout/vol-gluster-dir.xml
@@ -10,8 +10,6 @@
<format type='dir'/>
<permissions>
<mode>0600</mode>
- <owner>-1</owner>
- <group>-1</group>
</permissions>
</target>
</volume>
diff --git a/tests/storagevolxml2xmlout/vol-sheepdog.xml
b/tests/storagevolxml2xmlout/vol-sheepdog.xml
index 0a1f32c..d8f34d3 100644
--- a/tests/storagevolxml2xmlout/vol-sheepdog.xml
+++ b/tests/storagevolxml2xmlout/vol-sheepdog.xml
@@ -9,8 +9,6 @@
<format type='unknown'/>
<permissions>
<mode>0600</mode>
- <owner>-1</owner>
- <group>-1</group>
</permissions>
</target>
</volume>
--
2.4.0