From 919850d217e139b4f82f9798893cc816a7435e44 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 16 Jan 2019 08:45:43 -0700 Subject: [PATCH] io_uring: sync with upstream API Signed-off-by: Jens Axboe --- engines/io_uring.c | 11 +++-------- os/linux/io_uring.h | 21 +-------------------- t/io_uring.c | 16 ++++------------ 3 files changed, 8 insertions(+), 40 deletions(-) diff --git a/engines/io_uring.c b/engines/io_uring.c index 8c5d9deb..5fda2fc9 100644 --- a/engines/io_uring.c +++ b/engines/io_uring.c @@ -154,7 +154,7 @@ static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u) sqe->opcode = IORING_OP_READ_FIXED; else sqe->opcode = IORING_OP_WRITE_FIXED; - sqe->addr = io_u->xfer_buf; + sqe->addr = (unsigned long) io_u->xfer_buf; sqe->len = io_u->xfer_buflen; sqe->buf_index = io_u->index; } else { @@ -162,7 +162,7 @@ static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u) sqe->opcode = IORING_OP_READV; else sqe->opcode = IORING_OP_WRITEV; - sqe->addr = &ld->iovecs[io_u->index]; + sqe->addr = (unsigned long) &ld->iovecs[io_u->index]; sqe->len = 1; } sqe->off = io_u->offset; @@ -478,13 +478,8 @@ static int fio_ioring_queue_init(struct thread_data *td) ld->ring_fd = ret; if (o->fixedbufs) { - struct io_uring_register_buffers reg = { - .iovecs = ld->iovecs, - .nr_iovecs = depth - }; - ret = syscall(__NR_sys_io_uring_register, ld->ring_fd, - IORING_REGISTER_BUFFERS, ®); + IORING_REGISTER_BUFFERS, ld->iovecs, depth); if (ret < 0) return ret; } diff --git a/os/linux/io_uring.h b/os/linux/io_uring.h index 71e92026..9bb71816 100644 --- a/os/linux/io_uring.h +++ b/os/linux/io_uring.h @@ -20,10 +20,7 @@ struct io_uring_sqe { __u16 ioprio; /* ioprio for the request */ __s32 fd; /* file descriptor to do IO on */ __u64 off; /* offset into file */ - union { - void *addr; /* buffer or iovecs */ - __u64 __pad; - }; + __u64 addr; /* pointer to buffer or iovecs */ __u32 len; /* buffer size or number of iovecs */ union { __kernel_rwf_t rw_flags; @@ -136,20 +133,4 @@ struct io_uring_params { #define IORING_REGISTER_FILES 2 #define IORING_UNREGISTER_FILES 3 -struct io_uring_register_buffers { - union { - struct iovec *iovecs; - __u64 pad; - }; - __u32 nr_iovecs; -}; - -struct io_uring_register_files { - union { - __s32 *fds; - __u64 pad; - }; - __u32 nr_fds; -}; - #endif diff --git a/t/io_uring.c b/t/io_uring.c index ef5d52d1..da3b4d1f 100644 --- a/t/io_uring.c +++ b/t/io_uring.c @@ -96,21 +96,15 @@ static int do_nop = 0; /* no-op SQ ring commands */ static int io_uring_register_buffers(struct submitter *s) { - struct io_uring_register_buffers reg = { - .iovecs = s->iovecs, - .nr_iovecs = DEPTH - }; - if (do_nop) return 0; return syscall(__NR_sys_io_uring_register, s->ring_fd, - IORING_REGISTER_BUFFERS, ®); + IORING_REGISTER_BUFFERS, s->iovecs, DEPTH); } static int io_uring_register_files(struct submitter *s) { - struct io_uring_register_files reg; int i; if (do_nop) @@ -121,11 +115,9 @@ static int io_uring_register_files(struct submitter *s) s->fds[i] = s->files[i].real_fd; s->files[i].fixed_fd = i; } - reg.fds = s->fds; - reg.nr_fds = s->nr_files; return syscall(__NR_sys_io_uring_register, s->ring_fd, - IORING_REGISTER_FILES, ®); + IORING_REGISTER_FILES, s->fds, s->nr_files); } static int io_uring_setup(unsigned entries, struct io_uring_params *p) @@ -187,12 +179,12 @@ static void init_io(struct submitter *s, unsigned index) } if (fixedbufs) { sqe->opcode = IORING_OP_READ_FIXED; - sqe->addr = s->iovecs[index].iov_base; + sqe->addr = (unsigned long) s->iovecs[index].iov_base; sqe->len = BS; sqe->buf_index = index; } else { sqe->opcode = IORING_OP_READV; - sqe->addr = &s->iovecs[index]; + sqe->addr = (unsigned long) &s->iovecs[index]; sqe->len = 1; sqe->buf_index = 0; } -- 2.25.1