qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: philmd@linaro.org, fam@euphon.net, kwolf@redhat.com,
	hreitz@redhat.com, marcandre.lureau@redhat.com,
	peterx@redhat.com, farosas@suse.de, pbonzini@redhat.com,
	richard.henderson@linaro.org, qemu-block@nongnu.org
Subject: [PATCH 5/6] migration: Rephrase message on failure to save / load Xen device state
Date: Mon, 13 May 2024 16:17:02 +0200	[thread overview]
Message-ID: <20240513141703.549874-6-armbru@redhat.com> (raw)
In-Reply-To: <20240513141703.549874-1-armbru@redhat.com>

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>
---
 migration/savevm.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/migration/savevm.c b/migration/savevm.c
index 4509482ec4..a4a856982a 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -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"
@@ -3208,7 +3207,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
@@ -3257,7 +3256,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();
 }
-- 
2.45.0



  parent reply	other threads:[~2024-05-13 14:19 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-13 14:16 [PATCH 0/6] error: Eliminate QERR_IO_ERROR Markus Armbruster
2024-05-13 14:16 ` [PATCH 1/6] block: Improve error message when external snapshot can't flush Markus Armbruster
2024-05-13 14:24   ` Philippe Mathieu-Daudé
2024-05-13 14:16 ` [PATCH 2/6] dump/win_dump: Improve error messages on write error Markus Armbruster
2024-05-13 14:22   ` Philippe Mathieu-Daudé
2024-05-13 14:48     ` Markus Armbruster
2024-05-13 14:55       ` Philippe Mathieu-Daudé
2024-05-13 14:17 ` [PATCH 3/6] block/vmdk: Improve error messages on extent " Markus Armbruster
2024-05-13 14:23   ` Philippe Mathieu-Daudé
2024-05-13 14:17 ` [PATCH 4/6] cpus: Improve error messages on memsave, pmemsave " Markus Armbruster
2024-05-13 14:27   ` Philippe Mathieu-Daudé
2024-05-13 14:45     ` Markus Armbruster
2024-05-13 14:58       ` Philippe Mathieu-Daudé
2024-05-27 10:41         ` Markus Armbruster
2024-05-13 14:17 ` Markus Armbruster [this message]
2024-05-13 14:24   ` [PATCH 5/6] migration: Rephrase message on failure to save / load Xen device state Philippe Mathieu-Daudé
2024-05-13 18:07   ` Fabiano Rosas
2024-05-23 19:43   ` Peter Xu
2024-05-27 10:53     ` Markus Armbruster
2024-05-27 14:35       ` Peter Xu
2024-05-13 14:17 ` [PATCH 6/6] qerror: QERR_IO_ERROR is no longer used, drop Markus Armbruster
2024-05-13 14:28   ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240513141703.549874-6-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=fam@euphon.net \
    --cc=farosas@suse.de \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).