
On 23. 3. 2020 19:11, Peter Krempa wrote:
VIR_TRISTATE_BOOL_ABSENT which maps to the 'default' string would not be parsed back, so we shouldn't format it either.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f1e4d33a8d..f6a225e4e6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -24662,8 +24662,9 @@ virDomainDiskSourceNVMeFormat(virBufferPtr attrBuf, const virStorageSourceNVMeDef *nvme) { virBufferAddLit(attrBuf, " type='pci'"); - virBufferAsprintf(attrBuf, " managed='%s'", - virTristateBoolTypeToString(nvme->managed)); + if (nvme->managed != VIR_TRISTATE_BOOL_ABSENT) + virBufferAsprintf(attrBuf, " managed='%s'", + virTristateBoolTypeToString(nvme->managed)); virBufferAsprintf(attrBuf, " namespace='%llu'", nvme->namespc); virPCIDeviceAddressFormat(childBuf, nvme->pciAddr, false); }
There is a postparse callback which deals with _ABSENT (see commit 8cd7196974d): static int virDomainDiskDefPostParse(virDomainDiskDefPtr disk, const virDomainDef *def, virDomainXMLOptionPtr xmlopt) { ... if (disk->src->type == VIR_STORAGE_TYPE_NVME) { if (disk->src->nvme->managed == VIR_TRISTATE_BOOL_ABSENT) disk->src->nvme->managed = VIR_TRISTATE_BOOL_YES; } ... } But maybe the callback is not called from tests where virStorageSource is parsed directly? Michal