The disk type is not part of source and thus it's parsed earlier. This
bypasses the checks when parsing a disk type='network' if it's
completely missing the source.
Since there are possible active users of this (it was reported as a
problem with openstack) fix it by resetting the disk type to '_FILE' for
an empty cdrom which is handled correctly.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/domain_conf.c | 4 ++++
tests/qemuxml2xmloutdata/disk-source-pool.xml | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c1705a07b6..399804dfbd 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -10189,6 +10189,10 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
}
}
+ /* Reset def->src->type in case when 'source' was not present */
+ if (!source)
+ def->src->type = VIR_STORAGE_TYPE_FILE;
+
/* Only CDROM and Floppy devices are allowed missing source path
* to indicate no media present. LUN is for raw access CD-ROMs
* that are not attached to a physical device presently */
diff --git a/tests/qemuxml2xmloutdata/disk-source-pool.xml
b/tests/qemuxml2xmloutdata/disk-source-pool.xml
index 78e0449dfd..807d1099ed 100644
--- a/tests/qemuxml2xmloutdata/disk-source-pool.xml
+++ b/tests/qemuxml2xmloutdata/disk-source-pool.xml
@@ -25,7 +25,7 @@
<readonly/>
<address type='drive' controller='0' bus='0'
target='0' unit='1'/>
</disk>
- <disk type='volume' device='cdrom'>
+ <disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
--
2.21.0