[PATCH 0/6] refactor RDMA live migration based on rsocket API

2024-06-04 Thread Gonglei via
From: Jialin Wang Hi, This patch series attempts to refactor RDMA live migration by introducing a new QIOChannelRDMA class based on the rsocket API. The /usr/include/rdma/rsocket.h provides a higher level rsocket API that is a 1-1 match of the normal kernel 'sockets' API, which hides the detail

[PATCH 6/6] migration/rdma: support multifd for RDMA migration

2024-06-04 Thread Gonglei via
From: Jialin Wang Signed-off-by: Jialin Wang Signed-off-by: Gonglei --- migration/multifd.c | 10 ++ migration/rdma.c| 27 +++ migration/rdma.h| 6 ++ 3 files changed, 43 insertions(+) diff --git a/migration/multifd.c b/migration/multifd.c index f3

[PATCH 3/6] io/channel-rdma: support working in coroutine

2024-06-04 Thread Gonglei via
From: Jialin Wang It is not feasible to obtain RDMA completion queue notifications through poll/ppoll on the rsocket fd. Therefore, we create a thread named rpoller for each rsocket fd and two eventfds: pollin_eventfd and pollout_eventfd. When using io_create_watch or io_set_aio_fd_handler waits

[PATCH 2/6] io: add QIOChannelRDMA class

2024-06-04 Thread Gonglei via
From: Jialin Wang Implement a QIOChannelRDMA subclass that is based on the rsocket API (similar to socket API). Signed-off-by: Jialin Wang Signed-off-by: Gonglei --- include/io/channel-rdma.h | 152 + io/channel-rdma.c | 437 ++ io/meson

[PATCH 5/6] migration: introduce new RDMA live migration

2024-06-04 Thread Gonglei via
From: Jialin Wang Signed-off-by: Jialin Wang Signed-off-by: Gonglei --- migration/meson.build | 2 + migration/migration.c | 11 +- migration/rdma.c | 88 +++ migration/rdma.h | 24 4 files changed, 124 insertions(+), 1 deleti

[PATCH 4/6] tests/unit: add test-io-channel-rdma.c

2024-06-04 Thread Gonglei via
From: Jialin Wang Signed-off-by: Jialin Wang Signed-off-by: Gonglei --- tests/unit/meson.build| 1 + tests/unit/test-io-channel-rdma.c | 276 ++ 2 files changed, 277 insertions(+) create mode 100644 tests/unit/test-io-channel-rdma.c diff --git a/test