Peter Xu <pet...@redhat.com> wrote: > On Mon, Jul 17, 2017 at 03:42:35PM +0200, Juan Quintela wrote: >> When we start multifd, we will want to delay the main channel until >> the others are created. >> >> Signed-off-by: Juan Quintela <quint...@redhat.com> >> --- >> migration/migration.c | 23 ++++++++++++++--------- >> 1 file changed, 14 insertions(+), 9 deletions(-) >> >> diff --git a/migration/migration.c b/migration/migration.c >> index d9d5415..e122684 100644 >> --- a/migration/migration.c >> +++ b/migration/migration.c >> @@ -358,14 +358,11 @@ static void process_incoming_migration_co(void *opaque) >> >> static void migration_incoming_setup(QEMUFile *f) >> { >> - MigrationIncomingState *mis = migration_incoming_get_current(); >> - >> if (multifd_load_setup() != 0) { >> /* We haven't been able to create multifd threads >> nothing better to do */ >> exit(EXIT_FAILURE); >> } >> - mis->from_src_file = f; > > Shall we keep this, and ... > >> qemu_file_set_blocking(f, false); >> } >> >> @@ -384,18 +381,26 @@ void migration_fd_process_incoming(QEMUFile *f) >> gboolean migration_ioc_process_incoming(QIOChannel *ioc) >> { >> MigrationIncomingState *mis = migration_incoming_get_current(); >> + gboolean result = FALSE; >> >> if (!mis->from_src_file) { >> QEMUFile *f = qemu_fopen_channel_input(ioc); >> mis->from_src_file = f; > > ... remove this instead? I am not sure, but looks like RDMA is still > using migration_fd_process_incoming(): > > rdma_accept_incoming_migration > migration_fd_process_incoming > migration_incoming_setup > migration_incoming_process > process_incoming_migration_co <-- here we'll use from_src_file > while it's not inited?
Reworked all the "incoming" logic for other reasons, I *think* that now it is correct. Later, Juan.