On Mon, Jan 05, 2026 at 04:06:32PM -0300, Fabiano Rosas wrote:
> Leave migration_ioc_process_incoming to do only the channel
> identification process and move the migration start into
> channel.c. Both routines will be renamed in the next patches to better
> reflect their usage.
> 
> Signed-off-by: Fabiano Rosas <[email protected]>

Reviewed-by: Peter Xu <[email protected]>

One nitpick, as usual.

> ---
>  migration/channel.c   | 12 ++++++++++--
>  migration/channel.h   |  1 +
>  migration/migration.c | 13 +++++--------
>  migration/migration.h |  2 +-
>  4 files changed, 17 insertions(+), 11 deletions(-)
> 
> diff --git a/migration/channel.c b/migration/channel.c
> index 6acce7b2a2..f1c1341a3e 100644
> --- a/migration/channel.c
> +++ b/migration/channel.c
> @@ -33,6 +33,7 @@ void migration_channel_process_incoming(QIOChannel *ioc)
>  {
>      MigrationIncomingState *mis = migration_incoming_get_current();
>      Error *local_err = NULL;
> +    uint8_t ch;
>  
>      trace_migration_set_incoming_channel(
>          ioc, object_get_typename(OBJECT(ioc)));
> @@ -41,9 +42,16 @@ void migration_channel_process_incoming(QIOChannel *ioc)
>          migration_tls_channel_process_incoming(ioc, &local_err);
>      } else {
>          migration_ioc_register_yank(ioc);
> -        migration_ioc_process_incoming(ioc, &local_err);
> -    }
> +        ch = migration_ioc_process_incoming(ioc, &local_err);
> +        if (!ch) {
> +            goto out;
> +        }
>  
> +        if (migration_incoming_setup(ioc, ch, &local_err)) {
> +            migration_incoming_process();
> +        }
> +    }
> +out:
>      if (local_err) {
>          error_report_err(local_err);
>          migrate_set_state(&mis->state, mis->state, MIGRATION_STATUS_FAILED);
> diff --git a/migration/channel.h b/migration/channel.h
> index 93dedbf52b..b45e909597 100644
> --- a/migration/channel.h
> +++ b/migration/channel.h
> @@ -20,6 +20,7 @@
>  
>  /* Migration channel types */
>  enum {

typedef enum { ... } MigChannelType;

Then..

> +    CH_NONE,
>      CH_MAIN,
>      CH_MULTIFD,
>      CH_POSTCOPY
> diff --git a/migration/migration.c b/migration/migration.c
> index 906f0bdab3..8117c74b52 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1034,10 +1034,10 @@ static bool 
> migration_has_main_and_multifd_channels(void)
>      return true;
>  }
>  
> -void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp)
> +uint8_t migration_ioc_process_incoming(QIOChannel *ioc, Error **errp)

.. use it everywhere, including retval.

>  {
>      MigrationIncomingState *mis = migration_incoming_get_current();
> -    uint8_t channel;
> +    uint8_t channel = CH_NONE;
>      uint32_t channel_magic = 0;
>      int ret = 0;
>  
> @@ -1056,7 +1056,7 @@ void migration_ioc_process_incoming(QIOChannel *ioc, 
> Error **errp)
>              ret = migration_channel_read_peek(ioc, (void *)&channel_magic,
>                                                sizeof(channel_magic), errp);
>              if (ret != 0) {
> -                return;
> +                goto out;
>              }
>  
>              channel_magic = be32_to_cpu(channel_magic);
> @@ -1071,7 +1071,6 @@ void migration_ioc_process_incoming(QIOChannel *ioc, 
> Error **errp)
>                  channel = CH_MAIN;
>              } else {
>                  error_setg(errp, "unknown channel magic: %u", channel_magic);
> -                return;
>              }
>          } else if (mis->from_src_file && migrate_multifd()) {
>              /*
> @@ -1083,16 +1082,14 @@ void migration_ioc_process_incoming(QIOChannel *ioc, 
> Error **errp)
>              channel = CH_MAIN;
>          } else {
>              error_setg(errp, "non-peekable channel used without multifd");
> -            return;
>          }
>      } else {
>          assert(migrate_postcopy_preempt());
>          channel = CH_POSTCOPY;
>      }
>  
> -    if (migration_incoming_setup(ioc, channel, errp)) {
> -        migration_incoming_process();
> -    }
> +out:
> +    return channel;
>  }
>  
>  /**
> diff --git a/migration/migration.h b/migration/migration.h
> index cd6cfd62ba..c760349b07 100644
> --- a/migration/migration.h
> +++ b/migration/migration.h
> @@ -527,7 +527,7 @@ struct MigrationState {
>  void migrate_set_state(MigrationStatus *state, MigrationStatus old_state,
>                         MigrationStatus new_state);
>  
> -void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp);
> +uint8_t migration_ioc_process_incoming(QIOChannel *ioc, Error **errp);
>  void migration_incoming_process(void);
>  bool migration_incoming_setup(QIOChannel *ioc, uint8_t channel, Error 
> **errp);
>  void migration_outgoing_setup(QIOChannel *ioc);
> -- 
> 2.51.0
> 

-- 
Peter Xu


Reply via email to