[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) {