diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2021-06-09 16:40:21 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2021-06-09 16:40:21 +0100 |
| commit | 7fe7fae8b48e3f9c647fd685e5155ebc8e6fb84d (patch) | |
| tree | 1610dad29b044c9e4fbedaa14faab8421d5c50b3 /migration/rdma.c | |
| parent | a4716fd8d7c877185652f5f8e25032dc7699d51b (diff) | |
| parent | a4a571d97866d056787d7a654be5792765be8a60 (diff) | |
| download | focaccia-qemu-7fe7fae8b48e3f9c647fd685e5155ebc8e6fb84d.tar.gz focaccia-qemu-7fe7fae8b48e3f9c647fd685e5155ebc8e6fb84d.zip | |
Merge remote-tracking branch 'remotes/dgilbert-gitlab/tags/pull-migration-20210609a' into staging
Migration pull for 2021-06-09 Yank crash fix from Leo RDMA fix from Li mptcp support from me dirty-rate changes from Hyman and Peter (Note I've switched to the gitlab I've been using for virtiofs pulls) Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> # gpg: Signature made Wed 09 Jun 2021 15:40:01 BST # gpg: using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7 # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" [full] # Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A 9FA9 0516 331E BC5B FDE7 * remotes/dgilbert-gitlab/tags/pull-migration-20210609a: hmp: Add "calc_dirty_rate" and "info dirty_rate" cmds migration/dirtyrate: make sample page count configurable sockets: Support multipath TCP migration/socket: Close the listener at the end migration: Add cleanup hook for inwards migration io/net-listener: Call the notifier during finalize channel-socket: Only set CLOEXEC if we have space for fds migration/rdma: Fix cm event use after free yank: Unregister function when using TLS migration Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'migration/rdma.c')
| -rw-r--r-- | migration/rdma.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/migration/rdma.c b/migration/rdma.c index 1cdb4561f3..d90b29a4b5 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -1539,16 +1539,20 @@ static int qemu_rdma_wait_comp_channel(RDMAContext *rdma) if (pfds[1].revents) { ret = rdma_get_cm_event(rdma->channel, &cm_event); - if (!ret) { - rdma_ack_cm_event(cm_event); + if (ret) { + error_report("failed to get cm event while wait " + "completion channel"); + return -EPIPE; } error_report("receive cm event while wait comp channel," "cm event is %d", cm_event->event); if (cm_event->event == RDMA_CM_EVENT_DISCONNECTED || cm_event->event == RDMA_CM_EVENT_DEVICE_REMOVAL) { + rdma_ack_cm_event(cm_event); return -EPIPE; } + rdma_ack_cm_event(cm_event); } break; @@ -3285,7 +3289,6 @@ static void rdma_cm_poll_handler(void *opaque) error_report("get_cm_event failed %d", errno); return; } - rdma_ack_cm_event(cm_event); if (cm_event->event == RDMA_CM_EVENT_DISCONNECTED || cm_event->event == RDMA_CM_EVENT_DEVICE_REMOVAL) { @@ -3298,12 +3301,14 @@ static void rdma_cm_poll_handler(void *opaque) rdma->return_path->error_state = -EPIPE; } } + rdma_ack_cm_event(cm_event); if (mis->migration_incoming_co) { qemu_coroutine_enter(mis->migration_incoming_co); } return; } + rdma_ack_cm_event(cm_event); } static int qemu_rdma_accept(RDMAContext *rdma) |