Commit 3d200242 authored by Jens Axboe's avatar Jens Axboe

io_uring: add buffer selection support to IORING_OP_NOP

Obviously not really useful since it's not transferring data, but it
is helpful in benchmarking overhead of provided buffers.
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent e7637a49
...@@ -1058,6 +1058,7 @@ static const struct io_op_def io_op_defs[] = { ...@@ -1058,6 +1058,7 @@ static const struct io_op_def io_op_defs[] = {
[IORING_OP_NOP] = { [IORING_OP_NOP] = {
.audit_skip = 1, .audit_skip = 1,
.iopoll = 1, .iopoll = 1,
.buffer_select = 1,
}, },
[IORING_OP_READV] = { [IORING_OP_READV] = {
.needs_file = 1, .needs_file = 1,
...@@ -4538,7 +4539,17 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags) ...@@ -4538,7 +4539,17 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags)
*/ */
static int io_nop(struct io_kiocb *req, unsigned int issue_flags) static int io_nop(struct io_kiocb *req, unsigned int issue_flags)
{ {
__io_req_complete(req, issue_flags, 0, 0); void __user *buf;
if (req->flags & REQ_F_BUFFER_SELECT) {
size_t len = 1;
buf = io_buffer_select(req, &len, issue_flags);
if (IS_ERR(buf))
return PTR_ERR(buf);
}
__io_req_complete(req, issue_flags, 0, io_put_kbuf(req, issue_flags));
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment