Skip to content

Commit

Permalink
migration: Delay start of migration main routines
Browse files Browse the repository at this point in the history
We need to make sure that we have started all the multifd threads.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
  • Loading branch information
Juan Quintela committed May 15, 2018
1 parent 60df2d4 commit 36c2f8b
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 2 deletions.
4 changes: 2 additions & 2 deletions migration/migration.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ static void migration_incoming_setup(QEMUFile *f)
qemu_file_set_blocking(f, false);
}

static void migration_incoming_process(void)
void migration_incoming_process(void)
{
Coroutine *co = qemu_coroutine_create(process_incoming_migration_co, NULL);
qemu_coroutine_enter(co);
Expand All @@ -448,7 +448,7 @@ void migration_ioc_process_incoming(QIOChannel *ioc)

if (!mis->from_src_file) {
QEMUFile *f = qemu_fopen_channel_input(ioc);
migration_fd_process_incoming(f);
migration_incoming_setup(f);
return;
}
multifd_recv_new_channel(ioc);
Expand Down
1 change: 1 addition & 0 deletions migration/migration.h
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ void migrate_set_state(int *state, int old_state, int new_state);

void migration_fd_process_incoming(QEMUFile *f);
void migration_ioc_process_incoming(QIOChannel *ioc);
void migration_incoming_process(void);

bool migration_has_all_channels(void);

Expand Down
3 changes: 3 additions & 0 deletions migration/ram.c
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,9 @@ void multifd_recv_new_channel(QIOChannel *ioc)
qemu_thread_create(&p->thread, p->name, multifd_recv_thread, p,
QEMU_THREAD_JOINABLE);
atomic_inc(&multifd_recv_state->count);
if (multifd_recv_state->count == migrate_multifd_channels()) {
migration_incoming_process();
}
}

/**
Expand Down
4 changes: 4 additions & 0 deletions migration/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@ static void socket_accept_incoming_migration(QIONetListener *listener,
qio_net_listener_disconnect(listener);

object_unref(OBJECT(listener));

if (!migrate_use_multifd()) {
migration_incoming_process();
}
}
}

Expand Down

0 comments on commit 36c2f8b

Please sign in to comment.