[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 15/19] migration: Create thread infrastructur
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [PATCH v6 15/19] migration: Create thread infrastructure for multifd recv side |
Date: |
Fri, 11 Aug 2017 12:35:12 +0800 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Tue, Aug 08, 2017 at 06:26:25PM +0200, Juan Quintela wrote:
> We make the locking and the transfer of information specific, even if we
> are still receiving things through the main thread.
>
> Signed-off-by: Juan Quintela <address@hidden>
>
> --
>
> We split when we create the main channel and where we start the main
> migration thread, so we wait for the creation of the other threads.
>
> Use multifd_clear_group().
> ---
> migration/migration.c | 7 ++++---
> migration/migration.h | 1 +
> migration/ram.c | 55
> +++++++++++++++++++++++++++++++++++++++++++++++----
> migration/socket.c | 2 +-
> 4 files changed, 57 insertions(+), 8 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 8e9505a..b78dffc 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -381,7 +381,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);
> @@ -400,9 +400,10 @@ void migration_ioc_process_incoming(QIOChannel *ioc)
> if (!mis->from_src_file) {
> QEMUFile *f = qemu_fopen_channel_input(ioc);
> mis->from_src_file = f;
> - migration_fd_process_incoming(f);
> + migration_incoming_setup(f);
Here now we only setup the incoming channels, but not processing it
any more. Then would it be good we rename the function name as well?
The old "migration_ioc_process_incoming" has hints that it processed
something... And...
> + return;
> }
> - /* We still only have a single channel. Nothing to do here yet */
> + multifd_new_channel(ioc);
> }
[...]
> @@ -183,12 +183,12 @@ static gboolean
> socket_accept_incoming_migration(QIOChannel *ioc,
>
> qio_channel_set_name(QIO_CHANNEL(sioc), "migration-socket-incoming");
> migration_channel_process_incoming(QIO_CHANNEL(sioc));
> - object_unref(OBJECT(sioc));
>
> out:
> if (migration_has_all_channels()) {
> /* Close listening socket as its no longer needed */
> qio_channel_close(ioc, NULL);
> + migration_incoming_process();
... here we only added migration_incoming_process() for sockets. Would
that break fd/exec migration?
Thanks,
> return G_SOURCE_REMOVE;
> } else {
> return G_SOURCE_CONTINUE;
--
Peter Xu
- [Qemu-devel] [PATCH v6 11/19] migration: Start of multiple fd work, (continued)
[Qemu-devel] [PATCH v6 12/19] migration: Create ram_multifd_page, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 14/19] migration: Send the fd number which we are going to use for this page, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 13/19] migration: Really use multiple pages at a time, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 15/19] migration: Create thread infrastructure for multifd recv side, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 16/19] migration: Test new fd infrastructure, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 17/19] migration: Rename initial_bytes, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 18/19] migration: Transfer pages over new channels, Juan Quintela, 2017/08/08
[Qemu-devel] [PATCH v6 19/19] migration: Flush receive queue, Juan Quintela, 2017/08/08