On Fri, 23 Aug 2024 at 23:12, Fabiano Rosas <faro...@suse.de> wrote:
> Prior to moving the ram code into multifd-nocomp.c, change the code to
> register the nocomp ops dynamically so we don't need to have the ops
> structure defined in multifd.c.
>
> While here, move the ops struct initialization to the end of the file
> to make the next diff cleaner.
>
> Signed-off-by: Fabiano Rosas <faro...@suse.de>
> ---
>  migration/multifd.c | 32 +++++++++++++++++++-------------
>  1 file changed, 19 insertions(+), 13 deletions(-)
>
> diff --git a/migration/multifd.c b/migration/multifd.c
> index 9f40bb2f16..e100836cbe 100644
> --- a/migration/multifd.c
> +++ b/migration/multifd.c
> @@ -287,22 +287,12 @@ static int multifd_nocomp_recv(MultiFDRecvParams *p, 
> Error **errp)
>      return qio_channel_readv_all(p->c, p->iov, p->normal_num, errp);
>  }
>
> -static MultiFDMethods multifd_nocomp_ops = {
> -    .send_setup = multifd_nocomp_send_setup,
> -    .send_cleanup = multifd_nocomp_send_cleanup,
> -    .send_prepare = multifd_nocomp_send_prepare,
> -    .recv_setup = multifd_nocomp_recv_setup,
> -    .recv_cleanup = multifd_nocomp_recv_cleanup,
> -    .recv = multifd_nocomp_recv
> -};
> -
> -static MultiFDMethods *multifd_ops[MULTIFD_COMPRESSION__MAX] = {
> -    [MULTIFD_COMPRESSION_NONE] = &multifd_nocomp_ops,
> -};
> +static MultiFDMethods *multifd_ops[MULTIFD_COMPRESSION__MAX] = {};
>
>  void multifd_register_ops(int method, MultiFDMethods *ops)
>  {
> -    assert(0 < method && method < MULTIFD_COMPRESSION__MAX);
> +    assert(0 <= method && method < MULTIFD_COMPRESSION__MAX);
> +    assert(!multifd_ops[method]);
>      multifd_ops[method] = ops;
>  }
>
> @@ -1701,3 +1691,19 @@ bool multifd_send_prepare_common(MultiFDSendParams *p)
>
>      return true;
>  }
> +
> +static MultiFDMethods multifd_nocomp_ops = {
> +    .send_setup = multifd_nocomp_send_setup,
> +    .send_cleanup = multifd_nocomp_send_cleanup,
> +    .send_prepare = multifd_nocomp_send_prepare,
> +    .recv_setup = multifd_nocomp_recv_setup,
> +    .recv_cleanup = multifd_nocomp_recv_cleanup,
> +    .recv = multifd_nocomp_recv
> +};
> +
> +static void multifd_nocomp_register(void)
> +{
> +    multifd_register_ops(MULTIFD_COMPRESSION_NONE, &multifd_nocomp_ops);
> +}
> +
> +migration_init(multifd_nocomp_register);

Looks okay.
Reviewed-by: Prasad Pandit <p...@fedoraproject.org>

Thank you.
---
  - Prasad


Reply via email to