diff options
author | Peter Xu <peterx@redhat.com> | 2018-06-27 21:22:44 +0800 |
---|---|---|
committer | Dr. David Alan Gilbert <dgilbert@redhat.com> | 2018-07-10 12:48:53 +0100 |
commit | 81e620531fa842f760086964ca1b8657ae6c07ba (patch) | |
tree | 9e2422bf4269d3a9fb40bc9906b2545478dbc31b /migration/ram.c | |
parent | eed1cc7866ae35bd28926d75447dd6076bd6bb96 (diff) | |
download | qemu-81e620531fa842f760086964ca1b8657ae6c07ba.zip qemu-81e620531fa842f760086964ca1b8657ae6c07ba.tar.gz qemu-81e620531fa842f760086964ca1b8657ae6c07ba.tar.bz2 |
migration: move income process out of multifd
Move the call to migration_incoming_process() out of multifd code. It's
a bit strange that we can migration generic calls in multifd code.
Instead, let multifd_recv_new_channel() return a boolean showing whether
it's ready to continue the incoming migration.
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20180627132246.5576-3-peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration/ram.c')
-rw-r--r-- | migration/ram.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/migration/ram.c b/migration/ram.c index 1cd98d6..23cea47 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1311,7 +1311,8 @@ bool multifd_recv_all_channels_created(void) return thread_count == atomic_read(&multifd_recv_state->count); } -void multifd_recv_new_channel(QIOChannel *ioc) +/* Return true if multifd is ready for the migration, otherwise false */ +bool multifd_recv_new_channel(QIOChannel *ioc) { MultiFDRecvParams *p; Error *local_err = NULL; @@ -1320,7 +1321,7 @@ void multifd_recv_new_channel(QIOChannel *ioc) id = multifd_recv_initial_packet(ioc, &local_err); if (id < 0) { multifd_recv_terminate_threads(local_err); - return; + return false; } p = &multifd_recv_state->params[id]; @@ -1328,7 +1329,7 @@ void multifd_recv_new_channel(QIOChannel *ioc) error_setg(&local_err, "multifd: received id '%d' already setup'", id); multifd_recv_terminate_threads(local_err); - return; + return false; } p->c = ioc; object_ref(OBJECT(ioc)); @@ -1339,9 +1340,7 @@ 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(); - } + return multifd_recv_state->count == migrate_multifd_channels(); } /** |