All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp>
Cc: qemu-devel@nongnu.org
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	[thread overview]
Message-ID: <m3r5az5ah5.fsf@trasno.org> (raw)
In-Reply-To: <AANLkTik_-8kYfZm7OUkw2_oZ6gYNdT8g=3oG8-nMsf6G@mail.gmail.com> (Yoshiaki Tamura's message of "Wed, 23 Feb 2011 18:51:07 +0900")

Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp> wrote:
> 2011/2/23 Juan Quintela <quintela@redhat.com>:
>>
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>> ---
>>  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 <aliguori@us.ibm.com>
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	other threads:[~2011-02-23 10:10 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-23  0:44 [Qemu-devel] [PATCH 00/22] Refactor and cleaup migration code Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 01/22] migration: Make *start_outgoing_migration return FdMigrationState Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 02/22] migration: Use FdMigrationState instead of MigrationState when possible Juan Quintela
2011-02-23  9:19   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 03/22] migration: Fold MigrationState into FdMigrationState Juan Quintela
2011-02-23  8:07   ` Yoshiaki Tamura
2011-02-23  9:13     ` [Qemu-devel] " Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 04/22] migration: Rename FdMigrationState MigrationState Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 05/22] migration: Refactor MigrationState creation Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 06/22] migration: Make all posible migration functions static Juan Quintela
2011-02-23  9:28   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 07/22] migration: move migrate_create_state to do_migrate Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 08/22] migration: Check that migration is active before cancel it Juan Quintela
2011-02-23  8:31   ` Yoshiaki Tamura
2011-02-23  9:14     ` [Qemu-devel] " Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 09/22] migration: Introduce MIG_STATE_NONE Juan Quintela
2011-02-23  9:36   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 10/22] migration: Refactor and simplify error checking in migrate_fd_put_ready Juan Quintela
2011-02-23  9:51   ` Yoshiaki Tamura
2011-02-23 10:08     ` Juan Quintela [this message]
2011-02-23 11:36       ` [Qemu-devel] " Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 11/22] migration: Introduce migrate_fd_completed() for consistenncy Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 12/22] migration: Use migrate_fd_error() in last place that set status to ERROR Juan Quintela
2011-02-23  8:25   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 13/22] migration: Our release callback was just free Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 14/22] migration: Remove get_status() accessor Juan Quintela
2011-02-23  8:42   ` Yoshiaki Tamura
2011-02-23  9:18     ` [Qemu-devel] " Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 15/22] migration: Remove migration cancel() callback Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 16/22] migration: Move exported functions to the end of the file Juan Quintela
2011-02-23  9:07   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 17/22] migration: use global variable directly Juan Quintela
2011-02-23  8:15   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 18/22] migration: another case of global variable assigned to local one Juan Quintela
2011-02-23  8:54   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 19/22] migration: convert current_migration from pointer to struct Juan Quintela
2011-02-23  8:53   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 20/22] migration: Use bandwidth_limit directly Juan Quintela
2011-02-23  0:44 ` [Qemu-devel] [PATCH 21/22] migration: Export a function that tells if the migration has finished correctly Juan Quintela
2011-02-23  8:50   ` Yoshiaki Tamura
2011-02-23  0:44 ` [Qemu-devel] [PATCH 22/22] migration: Make state definitions local Juan Quintela
2011-02-23  8:35   ` Yoshiaki Tamura
2011-02-23  9:21     ` [Qemu-devel] " Juan Quintela
2011-02-24  4:19       ` Yoshiaki Tamura
2011-02-24 12:23         ` Juan Quintela
2011-02-24 14:46           ` Anthony Liguori
2011-02-25  1:27             ` Yoshiaki Tamura
2011-02-25  1:20           ` Yoshiaki Tamura
2011-02-23  9:03 ` [Qemu-devel] Re: [PATCH 00/22] Refactor and cleaup migration code Paolo Bonzini
2011-02-23 10:15 ` Jan Kiszka

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=m3r5az5ah5.fsf@trasno.org \
    --to=quintela@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=tamura.yoshiaki@lab.ntt.co.jp \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.