From 3de7929fe510059333cf9784d4a2e8c932e169c3 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 3 Jul 2023 01:32:32 +0300 Subject: [PATCH] Integrate v2 - direct epoll --- src/qemu_driver.c | 6 ++++-- src/vitastor_c.cpp | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 5b844b93..8e93b3cc 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -281,6 +281,7 @@ static void vitastor_aio_fd_read(void *fddv) VitastorFdData *fdd = (VitastorFdData*)fddv; qemu_mutex_lock(&fdd->cli->mutex); fdd->fd_read(fdd->opaque); + vitastor_schedule_uring_handler(fdd->cli); qemu_mutex_unlock(&fdd->cli->mutex); } @@ -289,6 +290,7 @@ static void vitastor_aio_fd_write(void *fddv) VitastorFdData *fdd = (VitastorFdData*)fddv; qemu_mutex_lock(&fdd->cli->mutex); fdd->fd_write(fdd->opaque); + vitastor_schedule_uring_handler(fdd->cli); qemu_mutex_unlock(&fdd->cli->mutex); } @@ -377,8 +379,8 @@ static int vitastor_file_open(BlockDriverState *bs, QDict *options, int flags, E client->rdma_gid_index = qdict_get_try_int(options, "rdma-gid-index", 0); client->rdma_mtu = qdict_get_try_int(options, "rdma-mtu", 0); client->ctx = bdrv_get_aio_context(bs); - client->proxy = vitastor_c_create_uring( - client->config_path, client->etcd_host, client->etcd_prefix, + client->proxy = vitastor_c_create_qemu( + vitastor_aio_set_fd_handler, client, client->config_path, client->etcd_host, client->etcd_prefix, client->use_rdma, client->rdma_device, client->rdma_port_num, client->rdma_gid_index, client->rdma_mtu, 0 ); client->uring_eventfd = vitastor_c_uring_register_eventfd(client->proxy); diff --git a/src/vitastor_c.cpp b/src/vitastor_c.cpp index b1648a12..19349df9 100644 --- a/src/vitastor_c.cpp +++ b/src/vitastor_c.cpp @@ -97,7 +97,8 @@ vitastor_c *vitastor_c_create_qemu(QEMUSetFDHandler *aio_set_fd_handler, void *a self->aio_set_fd_handler(self->aio_ctx, fd, false, NULL, NULL, NULL, NULL); } }); - self->cli = new cluster_client_t(NULL, self->tfd, cfg_json); + self->ringloop = new ring_loop_t(512); + self->cli = new cluster_client_t(self->ringloop, self->tfd, cfg_json); return self; }