[Qemu-devel] [PATCH 11/31] migration: Fix !replay_can_snapshot() error handling

Markus Armbruster posted 31 patches 7 years ago
There is a newer version of this series
[Qemu-devel] [PATCH 11/31] migration: Fix !replay_can_snapshot() error handling
Posted by Markus Armbruster 7 years ago
Calling error_report() in a function that takes an Error ** argument
is suspicious.  save_snapshot() and load_snapshot() do that, and then
fail without setting an error.  Wrong.  The HMP commands survive this
unscathed, since hmp_handle_error() does nothing when no error has
been set.  Callers main() (on behalf of -loadvm) and
replay_vmstate_init() crash, but I'm not sure the error is possible
there.

Screwed up when commit 377b21ccea1 (v2.12.0) added incorrect error
handling right next to correct examples.  Fix by calling error_setg()
instead of error_report().

Fixes: 377b21ccea1755a8b0dae822c29567c58dda6939
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 migration/savevm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/migration/savevm.c b/migration/savevm.c
index 2d10e45582..5f8eb38676 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2414,8 +2414,8 @@ int save_snapshot(const char *name, Error **errp)
     AioContext *aio_context;
 
     if (!replay_can_snapshot()) {
-        error_report("Record/replay does not allow making snapshot "
-                     "right now. Try once more later.");
+        error_setg(errp, "Record/replay does not allow making snapshot "
+                   "right now. Try once more later.");
         return ret;
     }
 
@@ -2611,8 +2611,8 @@ int load_snapshot(const char *name, Error **errp)
     MigrationIncomingState *mis = migration_incoming_get_current();
 
     if (!replay_can_snapshot()) {
-        error_report("Record/replay does not allow loading snapshot "
-                     "right now. Try once more later.");
+        error_setg(errp, "Record/replay does not allow loading snapshot "
+                   "right now. Try once more later.");
         return -EINVAL;
     }
 
-- 
2.17.1


Re: [Qemu-devel] [PATCH 11/31] migration: Fix !replay_can_snapshot() error handling
Posted by Marc-André Lureau 7 years ago
Hi
On Mon, Oct 8, 2018 at 9:33 PM Markus Armbruster <armbru@redhat.com> wrote:
>
> Calling error_report() in a function that takes an Error ** argument
> is suspicious.  save_snapshot() and load_snapshot() do that, and then
> fail without setting an error.  Wrong.  The HMP commands survive this
> unscathed, since hmp_handle_error() does nothing when no error has
> been set.  Callers main() (on behalf of -loadvm) and
> replay_vmstate_init() crash, but I'm not sure the error is possible
> there.
>
> Screwed up when commit 377b21ccea1 (v2.12.0) added incorrect error
> handling right next to correct examples.  Fix by calling error_setg()
> instead of error_report().
>
> Fixes: 377b21ccea1755a8b0dae822c29567c58dda6939
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

> ---
>  migration/savevm.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 2d10e45582..5f8eb38676 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -2414,8 +2414,8 @@ int save_snapshot(const char *name, Error **errp)
>      AioContext *aio_context;
>
>      if (!replay_can_snapshot()) {
> -        error_report("Record/replay does not allow making snapshot "
> -                     "right now. Try once more later.");
> +        error_setg(errp, "Record/replay does not allow making snapshot "
> +                   "right now. Try once more later.");
>          return ret;
>      }
>
> @@ -2611,8 +2611,8 @@ int load_snapshot(const char *name, Error **errp)
>      MigrationIncomingState *mis = migration_incoming_get_current();
>
>      if (!replay_can_snapshot()) {
> -        error_report("Record/replay does not allow loading snapshot "
> -                     "right now. Try once more later.");
> +        error_setg(errp, "Record/replay does not allow loading snapshot "
> +                   "right now. Try once more later.");
>          return -EINVAL;
>      }
>
> --
> 2.17.1
>
>


-- 
Marc-André Lureau