qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 10/22] migration: Refactor and simplify error ch


From: Yoshiaki Tamura
Subject: Re: [Qemu-devel] [PATCH 10/22] migration: Refactor and simplify error checking in migrate_fd_put_ready
Date: Wed, 23 Feb 2011 18:51:07 +0900

2011/2/23 Juan Quintela <address@hidden>:
>
> Signed-off-by: Juan Quintela <address@hidden>
> ---
>  migration.c |   20 +++++++++-----------
>  1 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/migration.c b/migration.c
> index f015e02..641df9f 100644
> --- a/migration.c
> +++ b/migration.c
> @@ -361,28 +361,26 @@ static void migrate_fd_put_ready(void *opaque)
>
>     DPRINTF("iterate\n");
>     if (qemu_savevm_state_iterate(s->mon, s->file) == 1) {
> -        int state;
>         int old_vm_running = vm_running;
>
>         DPRINTF("done iterating\n");
>         vm_stop(VMSTOP_MIGRATE);
>
> -        if ((qemu_savevm_state_complete(s->mon, s->file)) < 0) {
> -            if (old_vm_running) {
> -                vm_start();
> -            }
> -            state = MIG_STATE_ERROR;
> +        if (qemu_savevm_state_complete(s->mon, s->file) < 0) {
> +            migrate_fd_error(s);
>         } else {
> -            state = MIG_STATE_COMPLETED;
> +            if (migrate_fd_cleanup(s) < 0) {
> +                migrate_fd_error(s);
> +            } else {
> +                s->state = MIG_STATE_COMPLETED;
> +                notifier_list_notify(&migration_state_notifiers);
> +            }
>         }
> -        if (migrate_fd_cleanup(s) < 0) {
> +        if (s->get_status(s) != MIG_STATE_COMPLETED) {
>             if (old_vm_running) {
>                 vm_start();
>             }

This part, although it's not fair to ask you, but calling
vm_start when != MIG_STATE_COMPLETED terrifies me because just
failing migrate_fd_cleanup (mostly calling qemu_fclose) may cause
split brain between src/dst.  Although I haven't encountered this
situation, just having stopped VMs on both sides is safer.

Thanks,

Yoshi

> -            state = MIG_STATE_ERROR;
>         }
> -        s->state = state;
> -        notifier_list_notify(&migration_state_notifiers);
>     }
>  }
>
> --
> 1.7.4
>
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]