2011/2/23 Juan Quintela <quint...@redhat.com>: > > Signed-off-by: Juan Quintela <quint...@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. Thanks, Yoshi > - state = MIG_STATE_ERROR; > } > - s->state = state; > - notifier_list_notify(&migration_state_notifiers); > } > } > > -- > 1.7.4 > > >