diff --git a/docs/schemas/storagecommon.rng b/docs/schemas/storagecommon.rng
index 5f71b10b305d675c928cb48747edcb8ac7037bfe..6f7d3695965177daa4f61d222ee710c971ce7358 100644
--- a/docs/schemas/storagecommon.rng
+++ b/docs/schemas/storagecommon.rng
@@ -101,18 +101,22 @@
-
-
-
- -1
-
-
-
-
-
- -1
-
-
+
+
+
+
+ -1
+
+
+
+
+
+
+
+ -1
+
+
+
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 65b270410871ee15e6301250b53f53ae66a0e833..ee6e0cf002b2c7ed6aa41a5601db623e8d2cd644 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, "0%o\n",
def->target.perms.mode);
- virBufferAsprintf(buf, "%d\n",
- (int) def->target.perms.uid);
- virBufferAsprintf(buf, "%d\n",
- (int) def->target.perms.gid);
+ if (def->target.perms.uid != (uid_t) -1)
+ virBufferAsprintf(buf, "%d\n",
+ (int) def->target.perms.uid);
+ if (def->target.perms.gid != (gid_t) -1)
+ virBufferAsprintf(buf, "%d\n",
+ (int) def->target.perms.gid);
virBufferEscapeString(buf, "\n",
def->target.perms.label);
@@ -1522,11 +1526,12 @@ virStorageVolTargetDefFormat(virStorageVolOptionsPtr options,
virBufferAsprintf(buf, "0%o\n",
def->perms->mode);
- virBufferAsprintf(buf, "%d\n",
- (int) def->perms->uid);
- virBufferAsprintf(buf, "%d\n",
- (int) def->perms->gid);
-
+ if (def->perms->uid != (uid_t) -1)
+ virBufferAsprintf(buf, "%d\n",
+ (int) def->perms->uid);
+ if (def->perms->gid != (gid_t) -1)
+ virBufferAsprintf(buf, "%d\n",
+ (int) def->perms->gid);
virBufferEscapeString(buf, "\n",
def->perms->label);
diff --git a/tests/storagepoolxml2xmlout/pool-dir-naming.xml b/tests/storagepoolxml2xmlout/pool-dir-naming.xml
index 536f58c7b91f8756b6be442157d195fb34763a01..dd6d9b84349bb0317337457c5e9eadaca5629fbb 100644
--- a/tests/storagepoolxml2xmlout/pool-dir-naming.xml
+++ b/tests/storagepoolxml2xmlout/pool-dir-naming.xml
@@ -10,8 +10,6 @@
/var/lib/libvirt/<images>
0700
- -1
- -1
diff --git a/tests/storagepoolxml2xmlout/pool-dir.xml b/tests/storagepoolxml2xmlout/pool-dir.xml
index f81bc1d61ba9f86db12add5216c6da1ac9c6c714..2054871d3c2f54363c3a8ba8d70bdf71cf2245e9 100644
--- a/tests/storagepoolxml2xmlout/pool-dir.xml
+++ b/tests/storagepoolxml2xmlout/pool-dir.xml
@@ -10,8 +10,6 @@
/var/lib/libvirt/images
0700
- -1
- -1
diff --git a/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml b/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
index bab2a15fb2c1cc10596d444194a9dca3184b4d57..90143f919d107fd4780e9a468038fa007767d302 100644
--- a/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
+++ b/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml
@@ -13,8 +13,6 @@
/mnt/gluster
0755
- -1
- -1
diff --git a/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml b/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
index 538b31d08f2d1d15dc98748cbc2a829fb64c4adb..0af0be179d5ba75071ba98869588efabbed9d1c5 100644
--- a/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
+++ b/tests/storagevolxml2xmlout/vol-gluster-dir-neg-uid.xml
@@ -10,8 +10,6 @@
0600
- -1
- -1
diff --git a/tests/storagevolxml2xmlout/vol-gluster-dir.xml b/tests/storagevolxml2xmlout/vol-gluster-dir.xml
index 538b31d08f2d1d15dc98748cbc2a829fb64c4adb..0af0be179d5ba75071ba98869588efabbed9d1c5 100644
--- a/tests/storagevolxml2xmlout/vol-gluster-dir.xml
+++ b/tests/storagevolxml2xmlout/vol-gluster-dir.xml
@@ -10,8 +10,6 @@
0600
- -1
- -1
diff --git a/tests/storagevolxml2xmlout/vol-sheepdog.xml b/tests/storagevolxml2xmlout/vol-sheepdog.xml
index 0a1f32c7877a3bf293e1ebbd63b1e3efad8347e6..d8f34d3806cbff8a00ec4c238810d69f714d5d9c 100644
--- a/tests/storagevolxml2xmlout/vol-sheepdog.xml
+++ b/tests/storagevolxml2xmlout/vol-sheepdog.xml
@@ -9,8 +9,6 @@
0600
- -1
- -1