From b3388de7f26e6e62a3cf67a12481fdfbf16fc5e4 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Fri, 3 Mar 2017 10:45:31 +0100 Subject: [PATCH] qemuDomainSaveImageUpdateDef: Don't overwrite errors from virDomainDefCheckABIStability https://bugzilla.redhat.com/show_bug.cgi?id=1379200 When we are restoring a domain from a saved image, or just updating its XML in the saved image - we have to make sure that the ABI guests sees will not change. We have a function for that which reports errors. But for some reason if this function fails, we call it again with slightly different argument. Therefore it might happen that we overwrite the original error and leave user with less helpful one. Signed-off-by: Michal Privoznik --- src/qemu/qemu_driver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 639db74085..2032fac71d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6107,7 +6107,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, goto cleanup; if (!virDomainDefCheckABIStability(def, newdef_migr)) { - virResetLastError(); + virErrorPtr err = virSaveLastError(); /* Due to a bug in older version of external snapshot creation * code, the XML saved in the save image was not a migratable @@ -6115,8 +6115,12 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, * saved XML type, we need to check the ABI compatibility against * the user provided XML if the check against the migratable XML * fails. Snapshots created prior to v1.1.3 have this issue. */ - if (!virDomainDefCheckABIStability(def, newdef)) + if (!virDomainDefCheckABIStability(def, newdef)) { + virSetError(err); + virFreeError(err); goto cleanup; + } + virFreeError(err); /* use the user provided XML */ ret = newdef;