From 7bf7e8e8e5cf1fe46194c6faf58e94cee815ac6a Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 9 Jan 2019 15:26:20 -0700 Subject: Update to newer API Signed-off-by: Jens Axboe --- test/io_uring-cp.c | 87 +++++++++++++++++++++++++++++------------------------- 1 file changed, 47 insertions(+), 40 deletions(-) (limited to 'test/io_uring-cp.c') diff --git a/test/io_uring-cp.c b/test/io_uring-cp.c index 67ed589..176d9de 100644 --- a/test/io_uring-cp.c +++ b/test/io_uring-cp.c @@ -16,7 +16,7 @@ static struct io_uring in_ring; static struct io_uring out_ring; -static void *bufs[QD]; +static struct iovec iovecs[QD]; static int setup_context(unsigned entries, struct io_uring *ring, int offload) { @@ -50,26 +50,27 @@ static int get_file_size(int fd, off_t *size) return -1; } -static unsigned iocb_index(struct io_uring_iocb *iocb) +static unsigned sqe_index(struct io_uring_sqe *sqe) { - return iocb - in_ring.sq.iocbs; + return sqe - in_ring.sq.sqes; } static int queue_read(int fd, off_t size, off_t offset) { - struct io_uring_iocb *iocb; + struct io_uring_sqe *sqe; - iocb = io_uring_get_iocb(&in_ring); - if (!iocb) + sqe = io_uring_get_sqe(&in_ring); + if (!sqe) return 1; - iocb->opcode = IORING_OP_READ; - iocb->flags = 0; - iocb->ioprio = 0; - iocb->fd = fd; - iocb->off = offset; - iocb->addr = bufs[iocb_index(iocb)]; - iocb->len = size; + sqe->opcode = IORING_OP_READV; + sqe->flags = 0; + sqe->ioprio = 0; + sqe->fd = fd; + sqe->off = offset; + sqe->addr = &iovecs[sqe_index(sqe)]; + iovecs[sqe_index(sqe)].iov_len = size; + sqe->len = 1; return 0; } @@ -85,16 +86,16 @@ static int complete_writes(unsigned *writes) nr = ret; while (nr) { - struct io_uring_event *ev = NULL; + struct io_uring_cqe *cqe; - ret = io_uring_wait_completion(&out_ring, &ev); + ret = io_uring_wait_completion(&out_ring, &cqe); if (ret < 0) { fprintf(stderr, "io_uring_wait_completion: %s\n", strerror(-ret)); return 1; } - if (ev->res < 0) { - fprintf(stderr, "ev failed: %s\n", strerror(-ev->res)); + if (cqe->res < 0) { + fprintf(stderr, "cqe failed: %s\n", strerror(-cqe->res)); return 1; } (*writes)--; @@ -106,22 +107,23 @@ static int complete_writes(unsigned *writes) static void queue_write(int fd, off_t size, off_t offset, unsigned index) { - struct io_uring_iocb *iocb; - - iocb = io_uring_get_iocb(&out_ring); - iocb->opcode = IORING_OP_WRITE; - iocb->flags = 0; - iocb->ioprio = 0; - iocb->fd = fd; - iocb->off = offset; - iocb->addr = bufs[index]; - iocb->len = size; + struct io_uring_sqe *sqe; + + sqe = io_uring_get_sqe(&out_ring); + sqe->opcode = IORING_OP_WRITEV; + sqe->flags = 0; + sqe->ioprio = 0; + sqe->fd = fd; + sqe->off = offset; + sqe->addr = &iovecs[index]; + iovecs[index].iov_len = size; + sqe->len = 1; } int main(int argc, char *argv[]) { - struct io_uring_event *ev; off_t read_left, write_left, offset; + struct io_uring_cqe *cqe; int i, infd, outfd, ret; unsigned reads, writes; @@ -141,9 +143,14 @@ int main(int argc, char *argv[]) return 1; } - for (i = 0; i < QD; i++) - if (posix_memalign(&bufs[i], BS, BS)) + for (i = 0; i < QD; i++) { + void *buf; + + if (posix_memalign(&buf, BS, BS)) return 1; + iovecs[i].iov_base = buf; + iovecs[i].iov_len = BS; + } if (setup_context(QD, &in_ring, 1)) return 1; @@ -157,7 +164,7 @@ int main(int argc, char *argv[]) write_left = read_left; while (read_left || write_left) { off_t this_size = read_left; - struct io_uring_iocb *iocb; + struct io_uring_sqe *sqe; if (this_size > BS) this_size = BS; @@ -186,25 +193,25 @@ skip_read: */ while (reads || write_left) { if (reads) - ret = io_uring_wait_completion(&in_ring, &ev); + ret = io_uring_wait_completion(&in_ring, &cqe); else - ret = io_uring_get_completion(&in_ring, &ev); + ret = io_uring_get_completion(&in_ring, &cqe); if (ret < 0) { fprintf(stderr, "io_uring_get_completion: %s\n", strerror(-ret)); return 1; } - if (!ev) + if (!cqe) break; reads--; - if (ev->res < 0) { - fprintf(stderr, "ev failed: %s\n", - strerror(-ev->res)); + if (cqe->res < 0) { + fprintf(stderr, "cqe failed: %s\n", + strerror(-cqe->res)); return 1; } - iocb = io_uring_iocb_from_ev(&in_ring, ev); - queue_write(outfd, ev->res, iocb->off, ev->index); - write_left -= ev->res; + sqe = io_uring_sqe_from_cqe(&in_ring, cqe); + queue_write(outfd, cqe->res, sqe->off, cqe->index); + write_left -= cqe->res; writes++; }; if (complete_writes(&writes)) -- cgit