qemu-devel
[Top][All Lists]
Advanced

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

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


From: Juan Quintela
Subject: [Qemu-devel] Re: [PATCH 10/22] migration: Refactor and simplify error checking in migrate_fd_put_ready
Date: Wed, 23 Feb 2011 11:08:54 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Yoshiaki Tamura <address@hidden> wrote:
> 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.

I see your pain. I am not happy at all, but this was integrated by
Anthony to fix this bug:

commit 41ef56e61153d7bd27d34a634633bb51b1c5988d
Author: Anthony Liguori <address@hidden>
Date:   Wed Jun 2 14:55:25 2010 -0500

    migration: respect exit status with exec:

 This fixes https://bugs.launchpad.net/qemu/+bug/391879


I think that it fixes that bug, but it makes me un-easy to restart vm if
there is a failure in migrate_fd_cleanup().  As I didn't wanted to
change behaviour with this series, I left it as it was.

Next on ToDo list is to do something sensible with errors, just now we
are not very good at handling them.

Later, Juan.



reply via email to

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