Skip to content

Commit 36c2f8b

Browse files
author
Juan Quintela
committed
migration: Delay start of migration main routines
We need to make sure that we have started all the multifd threads. Signed-off-by: Juan Quintela <[email protected]> Reviewed-by: Daniel P. Berrangé <[email protected]>
1 parent 60df2d4 commit 36c2f8b

File tree

4 files changed

+10
-2
lines changed

4 files changed

+10
-2
lines changed

Diff for: migration/migration.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ static void migration_incoming_setup(QEMUFile *f)
430430
qemu_file_set_blocking(f, false);
431431
}
432432

433-
static void migration_incoming_process(void)
433+
void migration_incoming_process(void)
434434
{
435435
Coroutine *co = qemu_coroutine_create(process_incoming_migration_co, NULL);
436436
qemu_coroutine_enter(co);
@@ -448,7 +448,7 @@ void migration_ioc_process_incoming(QIOChannel *ioc)
448448

449449
if (!mis->from_src_file) {
450450
QEMUFile *f = qemu_fopen_channel_input(ioc);
451-
migration_fd_process_incoming(f);
451+
migration_incoming_setup(f);
452452
return;
453453
}
454454
multifd_recv_new_channel(ioc);

Diff for: migration/migration.h

+1
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ void migrate_set_state(int *state, int old_state, int new_state);
200200

201201
void migration_fd_process_incoming(QEMUFile *f);
202202
void migration_ioc_process_incoming(QIOChannel *ioc);
203+
void migration_incoming_process(void);
203204

204205
bool migration_has_all_channels(void);
205206

Diff for: migration/ram.c

+3
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,9 @@ void multifd_recv_new_channel(QIOChannel *ioc)
717717
qemu_thread_create(&p->thread, p->name, multifd_recv_thread, p,
718718
QEMU_THREAD_JOINABLE);
719719
atomic_inc(&multifd_recv_state->count);
720+
if (multifd_recv_state->count == migrate_multifd_channels()) {
721+
migration_incoming_process();
722+
}
720723
}
721724

722725
/**

Diff for: migration/socket.c

+4
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ static void socket_accept_incoming_migration(QIONetListener *listener,
170170
qio_net_listener_disconnect(listener);
171171

172172
object_unref(OBJECT(listener));
173+
174+
if (!migrate_use_multifd()) {
175+
migration_incoming_process();
176+
}
173177
}
174178
}
175179

0 commit comments

Comments
 (0)