Currently the XML parser already allows the following syntax: <disk type='block' device='cdrom'> <source startupPolicy='optional'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> But it did not support writing out the <source> entry without the actual dev value. It would print dev='(null)'. This change allows it to write out XML to match the parser. --- docs/schemas/domaincommon.rng | 8 +++++--- src/conf/domain_conf.c | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index ecd3a42..2f596bf 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -1140,9 +1140,11 @@ <interleave> <optional> <element name="source"> - <attribute name="dev"> - <ref name="absFilePath"/> - </attribute> + <optional> + <attribute name="dev"> + <ref name="absFilePath"/> + </attribute> + </optional> <optional> <ref name="startupPolicy"/> </optional> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a9ff61c..d4b2dfc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -14202,8 +14202,9 @@ virDomainDiskSourceDefFormat(virBufferPtr buf, } break; case VIR_DOMAIN_DISK_TYPE_BLOCK: - virBufferEscapeString(buf, " <source dev='%s'", - def->src); + virBufferAddLit(buf, " <source"); + if (def->src) + virBufferEscapeString(buf, " dev='%s'", def->src); if (def->startupPolicy) virBufferEscapeString(buf, " startupPolicy='%s'", startupPolicy); -- 1.8.1.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list