From: Stefan Roesch <shr@fb.com>
To: <io-uring@vger.kernel.org>, <linux-nvme@lists.infradead.org>,
<kernel-team@fb.com>
Cc: <shr@fb.com>, <joshi.k@samsung.com>, Jens Axboe <axboe@kernel.dk>
Subject: [PATCH v4 12/12] io_uring: support CQE32 for nop operation
Date: Tue, 26 Apr 2022 11:21:34 -0700 [thread overview]
Message-ID: <20220426182134.136504-13-shr@fb.com> (raw)
In-Reply-To: <20220426182134.136504-1-shr@fb.com>
This adds support for filling the extra1 and extra2 fields for large
CQE's.
Co-developed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Stefan Roesch <shr@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
---
fs/io_uring.c | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index caeddcf8a61c..9e1fb8be9687 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -744,6 +744,12 @@ struct io_msg {
u32 len;
};
+struct io_nop {
+ struct file *file;
+ u64 extra1;
+ u64 extra2;
+};
+
struct io_async_connect {
struct sockaddr_storage address;
};
@@ -937,6 +943,7 @@ struct io_kiocb {
struct io_msg msg;
struct io_xattr xattr;
struct io_socket sock;
+ struct io_nop nop;
};
u8 opcode;
@@ -4872,6 +4879,19 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags)
return 0;
}
+static int io_nop_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
+{
+ /*
+ * If the ring is setup with CQE32, relay back addr/addr
+ */
+ if (req->ctx->flags & IORING_SETUP_CQE32) {
+ req->nop.extra1 = READ_ONCE(sqe->addr);
+ req->nop.extra2 = READ_ONCE(sqe->addr2);
+ }
+
+ return 0;
+}
+
/*
* IORING_OP_NOP just posts a completion event, nothing else.
*/
@@ -4882,7 +4902,11 @@ static int io_nop(struct io_kiocb *req, unsigned int issue_flags)
if (unlikely(ctx->flags & IORING_SETUP_IOPOLL))
return -EINVAL;
- __io_req_complete(req, issue_flags, 0, 0);
+ if (!(ctx->flags & IORING_SETUP_CQE32))
+ __io_req_complete(req, issue_flags, 0, 0);
+ else
+ __io_req_complete32(req, issue_flags, 0, 0, req->nop.extra1,
+ req->nop.extra2);
return 0;
}
@@ -7354,7 +7378,7 @@ static int io_req_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
{
switch (req->opcode) {
case IORING_OP_NOP:
- return 0;
+ return io_nop_prep(req, sqe);
case IORING_OP_READV:
case IORING_OP_READ_FIXED:
case IORING_OP_READ:
--
2.30.2
next prev parent reply other threads:[~2022-04-26 18:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-26 18:21 [PATCH v4 00/12] add large CQE support for io-uring Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 01/12] io_uring: support CQE32 in io_uring_cqe Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 02/12] io_uring: store add. return values for CQE32 Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 03/12] io_uring: change ring size calculation " Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 04/12] io_uring: add CQE32 setup processing Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 05/12] io_uring: add CQE32 completion processing Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 06/12] io_uring: modify io_get_cqe for CQE32 Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 07/12] io_uring: flush completions " Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 08/12] io_uring: overflow processing " Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 09/12] io_uring: add tracing for additional CQE32 fields Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 10/12] io_uring: support CQE32 in /proc info Stefan Roesch
2022-04-26 18:21 ` [PATCH v4 11/12] io_uring: enable CQE32 Stefan Roesch
2022-04-26 18:21 ` Stefan Roesch [this message]
2022-04-26 22:58 ` [PATCH v4 00/12] add large CQE support for io-uring Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220426182134.136504-13-shr@fb.com \
--to=shr@fb.com \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=joshi.k@samsung.com \
--cc=kernel-team@fb.com \
--cc=linux-nvme@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.