Since we already parse the <backingStore> of a disk source, we should
also validate the configuration for the whole backing chain and not only
for the top level image.

Signed-off-by: Peter Krempa <pkre...@redhat.com>
---
 src/conf/domain_conf.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 1c79d2b49b..8cd41edb5e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8974,6 +8974,8 @@ virDomainDiskSourceDefParseAuthValidate(const 
virStorageSource *src)
 static int
 virDomainDiskDefParseValidate(const virDomainDiskDef *def)
 {
+    virStorageSourcePtr next;
+
     if (def->bus != VIR_DOMAIN_DISK_BUS_VIRTIO) {
         if (def->event_idx != VIR_TRISTATE_SWITCH_ABSENT) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -9044,19 +9046,21 @@ virDomainDiskDefParseValidate(const virDomainDiskDef 
*def)
         }
     }

-    if (virDomainDiskSourceDefParseAuthValidate(def->src) < 0)
-        return -1;
+    for (next = def->src; next; next = next->backingStore) {
+        if (virDomainDiskSourceDefParseAuthValidate(next) < 0)
+            return -1;

-    if (def->src->encryption) {
-        virStorageEncryptionPtr encryption = def->src->encryption;
+        if (next->encryption) {
+            virStorageEncryptionPtr encryption = next->encryption;

-        if (encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS &&
-            encryption->encinfo.cipher_name) {
+            if (encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS &&
+                encryption->encinfo.cipher_name) {

-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                           _("supplying <cipher> for domain disk definition "
-                             "is unnecessary"));
-            return -1;
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                               _("supplying <cipher> for domain disk 
definition "
+                                 "is unnecessary"));
+                return -1;
+            }
         }
     }

-- 
2.16.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to