migration: Rephrase message on failure to save / load Xen device state
Functions that use an Error **errp parameter to return errors should not also report them to the user, because reporting is the caller's job. When the caller does, the error is reported twice. When it doesn't (because it recovered from the error), there is no error to report, i.e. the report is bogus. qmp_xen_save_devices_state() and qmp_xen_load_devices_state() violate this principle: they call qemu_save_device_state() and qemu_loadvm_state(), which call error_report_err(). I wish I could clean this up now, but migration's error reporting is too complicated (confused?) for me to mess with it. Instead, I'm merely improving the error reported by qmp_xen_load_devices_state() and qmp_xen_load_devices_state() to the QMP core from An IO error has occurred to saving Xen device state failed and loading Xen device state failed respectively. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-ID: <20240513141703.549874-6-armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Acked-by: Fabiano Rosas <farosas@suse.de> Acked-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
c59fb13be7
commit
fdac62dbd3
@ -45,7 +45,6 @@
|
||||
#include "qapi/qapi-commands-migration.h"
|
||||
#include "qapi/clone-visitor.h"
|
||||
#include "qapi/qapi-builtin-visit.h"
|
||||
#include "qapi/qmp/qerror.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "sysemu/cpus.h"
|
||||
#include "exec/memory.h"
|
||||
@ -3203,7 +3202,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
|
||||
object_unref(OBJECT(ioc));
|
||||
ret = qemu_save_device_state(f);
|
||||
if (ret < 0 || qemu_fclose(f) < 0) {
|
||||
error_setg(errp, QERR_IO_ERROR);
|
||||
error_setg(errp, "saving Xen device state failed");
|
||||
} else {
|
||||
/* libxl calls the QMP command "stop" before calling
|
||||
* "xen-save-devices-state" and in case of migration failure, libxl
|
||||
@ -3252,7 +3251,7 @@ void qmp_xen_load_devices_state(const char *filename, Error **errp)
|
||||
ret = qemu_loadvm_state(f);
|
||||
qemu_fclose(f);
|
||||
if (ret < 0) {
|
||||
error_setg(errp, QERR_IO_ERROR);
|
||||
error_setg(errp, "loading Xen device state failed");
|
||||
}
|
||||
migration_incoming_state_destroy();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user