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

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
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -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;
}