]> git.baikalelectronics.ru Git - kernel.git/commitdiff
io_uring: add buffer selection support to IORING_OP_NOP
authorJens Axboe <axboe@kernel.dk>
Fri, 6 May 2022 03:47:55 +0000 (21:47 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 18 May 2022 12:12:42 +0000 (06:12 -0600)
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>
fs/io_uring.c

index 2322583f92757f5c30f81946c77923ae179477ee..dc129c74ed1e5931af1b6d704c8476dc3a121d91 100644 (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 @@ done:
  */
 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;
 }