aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2022-06-15 09:53:47 -0600
committerJens Axboe <axboe@kernel.dk>2022-06-15 09:54:17 -0600
commita9e941d4986261332365292ffabf7f71383a9eef (patch)
tree79feac8b00abe5f61eccc0bef9c3431126843496
parent5261fce55c79810e103bf1947e3efffe540f71db (diff)
downloadliburing-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.311
-rw-r--r--src/include/liburing.h9
-rw-r--r--src/include/liburing/io_uring.h6
-rw-r--r--test/Makefile1
-rw-r--r--test/file-update-index-alloc.c139
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;
-}