[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 14/17] migration: Delay the start of receptio
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH v5 14/17] migration: Delay the start of reception on main channel |
Date: |
Thu, 20 Jul 2017 11:56:23 +0100 |
User-agent: |
Mutt/1.8.3 (2017-05-23) |
* Juan Quintela (address@hidden) wrote:
> When we start multifd, we will want to delay the main channel until
> the others are created.
>
> Signed-off-by: Juan Quintela <address@hidden>
> ---
> 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;
> 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;
I wonder if we need some state somewhere so that we can see that the
incoming migration is partially connected - since the main incoming
coroutine hasn't started yet, we've not got much of mis setup.
Dave
> if (!mis->from_src_file) {
> QEMUFile *f = qemu_fopen_channel_input(ioc);
> mis->from_src_file = f;
> - migration_fd_process_incoming(f);
> - if (!migrate_use_multifd()) {
> - return FALSE;
> - } else {
> - return TRUE;
> + migration_incoming_setup(f);
> + if (migrate_use_multifd()) {
> + result = TRUE;
> }
> + } else {
> + /* we can only arrive here if multifd is on
> + and this is a new channel */
> + result = multifd_new_channel(ioc);
> }
> - return multifd_new_channel(ioc);
> + if (result == FALSE) {
> + /* called when !multifd and for last multifd channel */
> + migration_incoming_process();
> + }
> +
> + return result;
> }
>
> /*
> --
> 2.9.4
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- Re: [Qemu-devel] [PATCH v5 11/17] migration: Really use multiple pages at a time, (continued)
- [Qemu-devel] [PATCH v5 12/17] migration: Send the fd number which we are going to use for this page, Juan Quintela, 2017/07/17
- [Qemu-devel] [PATCH v5 13/17] migration: Create thread infrastructure for multifd recv side, Juan Quintela, 2017/07/17
- [Qemu-devel] [PATCH v5 14/17] migration: Delay the start of reception on main channel, Juan Quintela, 2017/07/17
- [Qemu-devel] [PATCH v5 15/17] migration: Test new fd infrastructure, Juan Quintela, 2017/07/17
- [Qemu-devel] [PATCH v5 16/17] migration: Transfer pages over new channels, Juan Quintela, 2017/07/17
- [Qemu-devel] [PATCH v5 17/17] migration: Flush receive queue, Juan Quintela, 2017/07/17