diff options
author | Jens Axboe <axboe@kernel.dk> | 2022-06-15 09:53:47 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-06-15 09:54:17 -0600 |
commit | a9e941d4986261332365292ffabf7f71383a9eef (patch) | |
tree | 79feac8b00abe5f61eccc0bef9c3431126843496 | |
parent | 5261fce55c79810e103bf1947e3efffe540f71db (diff) | |
download | liburing-a9e941d4986261332365292ffabf7f71383a9eef.tar.gz |
Remove IORING_CLOSE_FD_AND_FILE_SLOT
We dropped this from 5.19, prune it from liburing as well for now.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | man/io_uring_prep_close.3 | 11 | ||||
-rw-r--r-- | src/include/liburing.h | 9 | ||||
-rw-r--r-- | src/include/liburing/io_uring.h | 6 | ||||
-rw-r--r-- | test/Makefile | 1 | ||||
-rw-r--r-- | test/file-update-index-alloc.c | 139 |
5 files changed, 0 insertions, 166 deletions
diff --git a/man/io_uring_prep_close.3 b/man/io_uring_prep_close.3 index c4b0276..94780f2 100644 --- a/man/io_uring_prep_close.3 +++ b/man/io_uring_prep_close.3 @@ -15,9 +15,6 @@ io_uring_prep_close \- prepare a file descriptor close request .BI "void io_uring_prep_close_direct(struct io_uring_sqe *" sqe "," .BI " unsigned " file_index ");" .PP -.BI "void io_uring_prep_close_direct_unregister(struct io_uring_sqe *" sqe "," -.BI " int " fd ", -.BI " unsigned " file_index ");" .fi .SH DESCRIPTION .PP @@ -35,14 +32,6 @@ argument instead of the This is identical to unregistering the direct descriptor, and is provided as a convenience. -For a close request of a direct descriptor where the application also wants -to unregister it, -.BR io_uring_prep_close_direct_unregister (3) -function is identical to closing a file descriptor indicated by -.I fd -and unregistering the direct descriptor specified by the -.IR file_index . - These functions prepare an async .BR close (2) request. See that man page for details. diff --git a/src/include/liburing.h b/src/include/liburing.h index c31ece2..8cba613 100644 --- a/src/include/liburing.h +++ b/src/include/liburing.h @@ -615,15 +615,6 @@ static inline void io_uring_prep_close_direct(struct io_uring_sqe *sqe, __io_uring_set_target_fixed_file(sqe, file_index); } -static inline void -io_uring_prep_close_direct_unregister(struct io_uring_sqe *sqe, int fd, - unsigned file_index) -{ - io_uring_prep_close(sqe, fd); - __io_uring_set_target_fixed_file(sqe, file_index); - sqe->close_flags = IORING_CLOSE_FD_AND_FILE_SLOT; -} - static inline void io_uring_prep_read(struct io_uring_sqe *sqe, int fd, void *buf, unsigned nbytes, __u64 offset) { diff --git a/src/include/liburing/io_uring.h b/src/include/liburing/io_uring.h index 15d9fbd..2f391c9 100644 --- a/src/include/liburing/io_uring.h +++ b/src/include/liburing/io_uring.h @@ -50,7 +50,6 @@ struct io_uring_sqe { __u32 unlink_flags; __u32 hardlink_flags; __u32 xattr_flags; - __u32 close_flags; }; __u64 user_data; /* data to be passed back at completion time */ /* pack this to avoid bogus arm OABI complaints */ @@ -79,11 +78,6 @@ struct io_uring_sqe { */ #define IORING_FILE_INDEX_ALLOC (~0U) -/* - * close flags, store in sqe->close_flags. - */ -#define IORING_CLOSE_FD_AND_FILE_SLOT (1U << 0) - enum { IOSQE_FIXED_FILE_BIT, IOSQE_IO_DRAIN_BIT, diff --git a/test/Makefile b/test/Makefile index ab031e0..51c35a9 100644 --- a/test/Makefile +++ b/test/Makefile @@ -79,7 +79,6 @@ test_srcs := \ files-exit-hang-poll.c \ files-exit-hang-timeout.c \ file-update.c \ - file-update-index-alloc.c \ file-verify.c \ fixed-buf-iter.c \ fixed-link.c \ diff --git a/test/file-update-index-alloc.c b/test/file-update-index-alloc.c deleted file mode 100644 index ea5b420..0000000 --- a/test/file-update-index-alloc.c +++ /dev/null @@ -1,139 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Description: test IORING_OP_FILES_UPDATE can support io_uring - * allocates an available direct descriptor instead of having the - * application pass one. - */ - -#include <errno.h> -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <sys/uio.h> - -#include "helpers.h" -#include "liburing.h" - -int main(int argc, char *argv[]) -{ - struct io_uring_cqe *cqe; - struct io_uring_sqe *sqe; - char wbuf[1] = { 0xef }, rbuf[1] = {0x0}; - struct io_uring ring; - int i, ret, pipe_fds[2], fds[2] = { -1, -1}; - - ret = io_uring_queue_init(8, &ring, 0); - if (ret) { - fprintf(stderr, "ring setup failed\n"); - return -1; - } - - ret = io_uring_register_files(&ring, fds, 2); - if (ret) { - fprintf(stderr, "%s: register ret=%d\n", __func__, ret); - return -1; - } - - if (pipe2(pipe_fds, O_NONBLOCK)) { - fprintf(stderr, "pipe() failed\n"); - return -1; - } - - /* - * Pass IORING_FILE_INDEX_ALLOC, so io_uring in kernel will allocate - * available direct descriptors. - */ - fds[0] = pipe_fds[0]; - fds[1] = pipe_fds[1]; - sqe = io_uring_get_sqe(&ring); - io_uring_prep_files_update(sqe, fds, 2, IORING_FILE_INDEX_ALLOC); - ret = io_uring_submit(&ring); - if (ret != 1) { - fprintf(stderr, "sqe submit failed: %d\n", ret); - return -1; - } - ret = io_uring_wait_cqe(&ring, &cqe); - if (ret < 0) { - fprintf(stderr, "wait files update completion failed: %d\n", ret); - return ret; - } - - if (cqe->res < 0) { - if (cqe->res == -EINVAL || cqe->res == -EOVERFLOW) { - fprintf(stdout, "files update(IORING_FILE_INDEX_ALLOC) not " - "supported, skipping\n"); - return 0; - } - fprintf(stderr, "files update(IORING_FILE_INDEX_ALLOC) failed: %d\n", cqe->res); - return ret; - } - ret = cqe->res; - if (ret != 2) { - fprintf(stderr, "should allocate 2 direct descriptors, but get:%d\n", ret); - return -1; - } - if (fds[0] != 0 || fds[1] != 1) { - fprintf(stderr, "allocate wrong direct descriptors:%d %d\n", - fds[0], fds[1]); - return -1; - } - io_uring_cqe_seen(&ring, cqe); - - sqe = io_uring_get_sqe(&ring); - io_uring_prep_write(sqe, fds[1], wbuf, sizeof(wbuf), 0); - sqe->flags |= IOSQE_FIXED_FILE; - ret = io_uring_submit(&ring); - if (ret != 1) { - fprintf(stderr, "sqe submit failed: %d\n", ret); - return -1; - } - ret = io_uring_wait_cqe(&ring, &cqe); - if (ret < 0 || cqe->res < 0) { - fprintf(stderr, "write failed %d\n", ret); - return ret; - } - io_uring_cqe_seen(&ring, cqe); - - sqe = io_uring_get_sqe(&ring); - io_uring_prep_read(sqe, fds[0], rbuf, sizeof(rbuf), 0); - sqe->flags |= IOSQE_FIXED_FILE; - ret = io_uring_submit(&ring); - if (ret != 1) { - fprintf(stderr, "sqe submit failed: %d\n", ret); - return -1; - } - ret = io_uring_wait_cqe(&ring, &cqe); - if (ret < 0 || cqe->res < 0) { - fprintf(stderr, "read failed %d\n", ret); - return ret; - } - if (rbuf[0] != (char)0xef) { - fprintf(stderr, "read wrong data %x\n", rbuf[0]); - return ret; - } - io_uring_cqe_seen(&ring, cqe); - - sqe = io_uring_get_sqe(&ring); - io_uring_prep_close_direct_unregister(sqe, pipe_fds[0], fds[0]); - sqe = io_uring_get_sqe(&ring); - io_uring_prep_close_direct_unregister(sqe, pipe_fds[1], fds[1]); - ret = io_uring_submit(&ring); - if (ret != 2) { - fprintf(stderr, "sqe submit failed: %d\n", ret); - return -1; - } - - for (i = 0; i < 2; i++) { - ret = io_uring_wait_cqe(&ring, &cqe); - if (ret < 0 || cqe->res < 0) { - fprintf(stderr, "wait close completion %d\n", ret); - return ret; - } - io_uring_cqe_seen(&ring, cqe); - } - - io_uring_queue_exit(&ring); - return 0; -} |