From eb81ab4d1c0a61293b79c5e90f87c5e6a746ccf2 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 6 Nov 2020 00:37:32 +0800 Subject: [PATCH] blk/kernel/io_uring: bump liburing to v0.7 * use functions exposed by liburing instead of using syscalls * v0.7 is the latest release at the time of writing, as liburing is under active development. it'd be better to use a newer release. * also use https://git.kernel.dk/liburing instead of http://git.kernel.dk/liburing. Signed-off-by: Kefu Chai --- cmake/modules/Builduring.cmake | 4 ++-- src/blk/kernel/io_uring.cc | 15 ++++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/cmake/modules/Builduring.cmake b/cmake/modules/Builduring.cmake index d16e779a2f8d7..7ea95d1419e0c 100644 --- a/cmake/modules/Builduring.cmake +++ b/cmake/modules/Builduring.cmake @@ -4,8 +4,8 @@ function(build_uring) include(ExternalProject) ExternalProject_Add(liburing_ext - GIT_REPOSITORY http://git.kernel.dk/liburing - GIT_TAG "4e360f71131918c36774f51688e5c65dea8d43f2" + GIT_REPOSITORY https://git.kernel.dk/liburing + GIT_TAG "liburing-0.7" SOURCE_DIR ${CMAKE_BINARY_DIR}/src/liburing CONFIGURE_COMMAND /configure BUILD_COMMAND env CC=${CMAKE_C_COMPILER} ${make_cmd} -C src -s diff --git a/src/blk/kernel/io_uring.cc b/src/blk/kernel/io_uring.cc index e8b2140f8c8d9..f248d38197a8a 100644 --- a/src/blk/kernel/io_uring.cc +++ b/src/blk/kernel/io_uring.cc @@ -134,7 +134,7 @@ int ioring_queue_t::init(std::vector &fds) if (ret < 0) return ret; - ret = io_uring_register(d->io_uring.ring_fd, IORING_REGISTER_FILES, + ret = io_uring_register_files(&d->io_uring, &fds[0], fds.size()); if (ret < 0) { ret = -errno; @@ -211,15 +211,12 @@ get_cqe: bool ioring_queue_t::supported() { - struct io_uring_params p; - - memset(&p, 0, sizeof(p)); - int fd = io_uring_setup(16, &p); - if (fd < 0) + struct io_uring ring; + int ret = io_uring_queue_init(16, &ring, 0); + if (ret) { return false; - - close(fd); - + } + io_uring_queue_exit(&ring); return true; } -- 2.39.5