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 <pkrempa@xxxxxxxxxx> --- 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@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list