Patchwork migration: reflect incoming failure to shell

login
register
mail settings
Submitter Eric Blake
Date April 16, 2013, 9:50 p.m.
Message ID <1366149041-626-1-git-send-email-eblake@redhat.com>
Download mbox | patch
Permalink /patch/237115/
State New
Headers show

Comments

Eric Blake - April 16, 2013, 9:50 p.m.
Management apps like libvirt don't know to pay attention to
stderr unless there is a non-zero exit status.

* migration.c (process_incoming_migration_co): Exit with non-zero
status on failure.

Signed-off-by: Eric Blake <eblake@redhat.com>
---

Noticed while reviewing:
https://lists.gnu.org/archive/html/qemu-devel/2013-04/msg03293.html
and it seems blatant enough to fix now, rather than waiting for
Pavel's series to stabilize.

Side note: libvirt explicitly forbids all use of exit({0,1}), and
instead encourages exit(EXIT_{SUCCESS,FAILURE}), precisely because
it makes it harder to slip in unintentional successful exits.

 migration.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Anthony Liguori - April 16, 2013, 10:03 p.m.
Eric Blake <eblake@redhat.com> writes:

> Management apps like libvirt don't know to pay attention to
> stderr unless there is a non-zero exit status.
>
> * migration.c (process_incoming_migration_co): Exit with non-zero
> status on failure.
>
> Signed-off-by: Eric Blake <eblake@redhat.com>

It looks like the migration coroutine cleans itself so there's no
obvious way to propagate the error.  A nicer cleanup would be to switch
the fprintf to error_report() too but this is certainly better than what
we have now.

Maybe we need an error_report_fatal()...

Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>

Regards,

Anthony Liguori


> ---
>
> Noticed while reviewing:
> https://lists.gnu.org/archive/html/qemu-devel/2013-04/msg03293.html
> and it seems blatant enough to fix now, rather than waiting for
> Pavel's series to stabilize.
>
> Side note: libvirt explicitly forbids all use of exit({0,1}), and
> instead encourages exit(EXIT_{SUCCESS,FAILURE}), precisely because
> it makes it harder to slip in unintentional successful exits.
>
>  migration.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/migration.c b/migration.c
> index 3b4b467..3eb0fad 100644
> --- a/migration.c
> +++ b/migration.c
> @@ -99,7 +99,7 @@ static void process_incoming_migration_co(void *opaque)
>      qemu_fclose(f);
>      if (ret < 0) {
>          fprintf(stderr, "load of migration failed\n");
> -        exit(0);
> +        exit(EXIT_FAILURE);
>      }
>      qemu_announce_self();
>      DPRINTF("successfully loaded vm state\n");
> -- 
> 1.8.1.4
Anthony Liguori - April 22, 2013, 6:35 p.m.
Applied.  Thanks.

Regards,

Anthony Liguori

Patch

diff --git a/migration.c b/migration.c
index 3b4b467..3eb0fad 100644
--- a/migration.c
+++ b/migration.c
@@ -99,7 +99,7 @@  static void process_incoming_migration_co(void *opaque)
     qemu_fclose(f);
     if (ret < 0) {
         fprintf(stderr, "load of migration failed\n");
-        exit(0);
+        exit(EXIT_FAILURE);
     }
     qemu_announce_self();
     DPRINTF("successfully loaded vm state\n");