In testing migration, I was hitting an error in the Perform step, but this was being returned as 'Unknown Error' via virsh. The reason is that even a failed Perform will call MigrateFinish to do cleanup, but Finish will always return an NULL == error in that case, overwriting the original message. I've added internal APIs which allow temporarily disabling error reporting: any ReportError calls will log the error message, but will not overwrite the previous error and will not trigger the error callback. These APIs are then used in a few places where they are needed. Thanks, Cole Cole Robinson (6): virterror: Make a thread local error state structure virterror: Add methods to temporarily disable error reporting. qemu: migrate: Disable errors in MigrateFinish if MigratePerform failed. Disable errors if Perform failed at the libvirt.c level. qemu: Disable errors in qemudShutdownVMDaemon virterror: Log reported errors when only logging output is stderr src/libvirt.c | 5 ++ src/qemu/qemu_driver.c | 13 ++++ src/util/logging.c | 3 +- src/util/virterror.c | 143 ++++++++++++++++++++++++++++++++--------- src/util/virterror_internal.h | 2 + 5 files changed, 135 insertions(+), 31 deletions(-) -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list