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(-)