qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] migration/rdma: Fix return-path case


From: address@hidden
Subject: Re: [PATCH] migration/rdma: Fix return-path case
Date: Wed, 15 Mar 2023 01:52:50 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1


On 15/03/2023 01:15, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> The RDMA code has return-path handling code, but it's only enabled
> if postcopy is enabled; if the 'return-path' migration capability
> is enabled, the return path is NOT setup but the core migration
> code still tries to use it and breaks.
> 
> Enable the RDMA return path if either postcopy or the return-path
> capability is enabled.
> 
> bz: https://bugzilla.redhat.com/show_bug.cgi?id=2063615
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

LGTM.

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



> ---
>   migration/rdma.c | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/migration/rdma.c b/migration/rdma.c
> index 288eadc2d2..9d70e9885b 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -3373,7 +3373,8 @@ static int qemu_rdma_accept(RDMAContext *rdma)
>        * initialize the RDMAContext for return path for postcopy after first
>        * connection request reached.
>        */
> -    if (migrate_postcopy() && !rdma->is_return_path) {
> +    if ((migrate_postcopy() || migrate_use_return_path())
> +        && !rdma->is_return_path) {
>           rdma_return_path = qemu_rdma_data_init(rdma->host_port, NULL);
>           if (rdma_return_path == NULL) {
>               rdma_ack_cm_event(cm_event);
> @@ -3455,7 +3456,8 @@ static int qemu_rdma_accept(RDMAContext *rdma)
>       }
>   
>       /* Accept the second connection request for return path */
> -    if (migrate_postcopy() && !rdma->is_return_path) {
> +    if ((migrate_postcopy() || migrate_use_return_path())
> +        && !rdma->is_return_path) {
>           qemu_set_fd_handler(rdma->channel->fd, 
> rdma_accept_incoming_migration,
>                               NULL,
>                               (void *)(intptr_t)rdma->return_path);
> @@ -4192,7 +4194,7 @@ void rdma_start_outgoing_migration(void *opaque,
>       }
>   
>       /* RDMA postcopy need a separate queue pair for return path */
> -    if (migrate_postcopy()) {
> +    if (migrate_postcopy() || migrate_use_return_path()) {
>           rdma_return_path = qemu_rdma_data_init(host_port, errp);
>   
>           if (rdma_return_path == NULL) {

reply via email to

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