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: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Jens Axboe 2022-05-05 21:47:55 -06:00
parent e7637a492b
commit 3d200242a6

View file

@ -1058,6 +1058,7 @@ static const struct io_op_def io_op_defs[] = {
[IORING_OP_NOP] = {
.audit_skip = 1,
.iopoll = 1,
.buffer_select = 1,
},
[IORING_OP_READV] = {
.needs_file = 1,
@ -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)
{
__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;
}