qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 04/13] migration/rdma: Remove all uses of RAM_CONTROL_HOOK


From: Zhijian Li (Fujitsu)
Subject: Re: [PATCH v3 04/13] migration/rdma: Remove all uses of RAM_CONTROL_HOOK
Date: Fri, 13 Oct 2023 08:00:57 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0


On 12/10/2023 04:35, Juan Quintela wrote:
> Instead of going trhough ram_control_load_hook(), call
> qemu_rdma_registration_handle() directly.
> 

s/trhough/through

Reviewed-by: Li Zhijian <lizhijian@fujitsu.com>


> Reviewed-by: Peter Xu <peterx@redhat.com>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
>   migration/qemu-file.h |  1 -
>   migration/rdma.h      |  3 +++
>   migration/ram.c       |  5 ++++-
>   migration/rdma.c      | 12 +++++++-----
>   4 files changed, 14 insertions(+), 7 deletions(-)
> 
> diff --git a/migration/qemu-file.h b/migration/qemu-file.h
> index 35e671a01e..14ff0d9cc4 100644
> --- a/migration/qemu-file.h
> +++ b/migration/qemu-file.h
> @@ -41,7 +41,6 @@ typedef int (QEMURamHookFunc)(QEMUFile *f, uint64_t flags, 
> void *data);
>    */
>   #define RAM_CONTROL_SETUP     0
>   #define RAM_CONTROL_ROUND     1
> -#define RAM_CONTROL_HOOK      2
>   #define RAM_CONTROL_FINISH    3
>   #define RAM_CONTROL_BLOCK_REG 4
>   
> diff --git a/migration/rdma.h b/migration/rdma.h
> index c13b94c782..8bd277efb9 100644
> --- a/migration/rdma.h
> +++ b/migration/rdma.h
> @@ -24,10 +24,13 @@ void rdma_start_incoming_migration(const char *host_port, 
> Error **errp);
>   
>   
>   #ifdef CONFIG_RDMA
> +int qemu_rdma_registration_handle(QEMUFile *f);
>   int qemu_rdma_registration_start(QEMUFile *f, uint64_t flags);
>   int qemu_rdma_registration_stop(QEMUFile *f, uint64_t flags);
>   #else
>   static inline
> +int qemu_rdma_registration_handle(QEMUFile *f) { return 0; }
> +static inline
>   int qemu_rdma_registration_start(QEMUFile *f, uint64_t flags) { return 0; }
>   static inline
>   int qemu_rdma_registration_stop(QEMUFile *f, uint64_t flags) { return 0; }
> diff --git a/migration/ram.c b/migration/ram.c
> index 15bd4ad697..ee8bdcdc82 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -4072,7 +4072,10 @@ static int ram_load_precopy(QEMUFile *f)
>               }
>               break;
>           case RAM_SAVE_FLAG_HOOK:
> -            ram_control_load_hook(f, RAM_CONTROL_HOOK, NULL);
> +            ret = qemu_rdma_registration_handle(f);
> +            if (ret < 0) {
> +                qemu_file_set_error(f, ret);
> +            }
>               break;
>           default:
>               error_report("Unknown combination of migration flags: 0x%x", 
> flags);
> diff --git a/migration/rdma.c b/migration/rdma.c
> index 99c0914a23..e533814599 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -3522,7 +3522,7 @@ static int dest_ram_sort_func(const void *a, const void 
> *b)
>    *
>    * Keep doing this until the source tells us to stop.
>    */
> -static int qemu_rdma_registration_handle(QEMUFile *f)
> +int qemu_rdma_registration_handle(QEMUFile *f)
>   {
>       RDMAControlHeader reg_resp = { .len = sizeof(RDMARegisterResult),
>                                  .type = RDMA_CONTROL_REGISTER_RESULT,
> @@ -3534,7 +3534,7 @@ static int qemu_rdma_registration_handle(QEMUFile *f)
>                                };
>       RDMAControlHeader blocks = { .type = RDMA_CONTROL_RAM_BLOCKS_RESULT,
>                                    .repeat = 1 };
> -    QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(qemu_file_get_ioc(f));
> +    QIOChannelRDMA *rioc;
>       Error *err = NULL;
>       RDMAContext *rdma;
>       RDMALocalBlocks *local;
> @@ -3550,7 +3550,12 @@ static int qemu_rdma_registration_handle(QEMUFile *f)
>       int count = 0;
>       int i = 0;
>   
> +    if (!migrate_rdma()) {
> +        return 0;
> +    }
> +
>       RCU_READ_LOCK_GUARD();
> +    rioc = QIO_CHANNEL_RDMA(qemu_file_get_ioc(f));
>       rdma = qatomic_rcu_read(&rioc->rdmain);
>   
>       if (!rdma) {
> @@ -3841,9 +3846,6 @@ static int rdma_load_hook(QEMUFile *f, uint64_t flags, 
> void *data)
>       case RAM_CONTROL_BLOCK_REG:
>           return rdma_block_notification_handle(f, data);
>   
> -    case RAM_CONTROL_HOOK:
> -        return qemu_rdma_registration_handle(f);
> -
>       default:
>           /* Shouldn't be called with any other values */
>           abort();

reply via email to

[Prev in Thread] Current Thread [Next in Thread]