From: Michal Privoznik <[email protected]> The chDomainGetXMLDesc() function claims to support VIR_DOMAIN_XML_INACTIVE to obtain the persistent definition of a running domain (in its call to virCheckFlags()) but in fact, it's always passing vm->def to virDomainDefFormat().
So far, there's no harm done because CH driver never sets domain def as transient. But that'll change. Signed-off-by: Michal Privoznik <[email protected]> --- src/ch/ch_driver.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c index ad13306c4c..8ec90e1192 100644 --- a/src/ch/ch_driver.c +++ b/src/ch/ch_driver.c @@ -1277,6 +1277,7 @@ static char *chDomainGetXMLDesc(virDomainPtr dom, { virCHDriver *driver = dom->conn->privateData; virDomainObj *vm; + virDomainDef *def; char *ret = NULL; virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS, NULL); @@ -1287,7 +1288,13 @@ static char *chDomainGetXMLDesc(virDomainPtr dom, if (virDomainGetXMLDescEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; - ret = virDomainDefFormat(vm->def, driver->xmlopt, + if ((flags & VIR_DOMAIN_XML_INACTIVE) && vm->newDef) { + def = vm->newDef; + } else { + def = vm->def; + } + + ret = virDomainDefFormat(def, driver->xmlopt, virDomainDefFormatConvertXMLFlags(flags)); cleanup: -- 2.51.0
