diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2022-11-11 19:54:08 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-11-21 17:44:18 +0300 |
commit | e52d2e583e4ad1d5d0b804d79c2b8752eb0e5ceb (patch) | |
tree | 8b6e35dde6b262152c7e01f59e2f6e13ae791395 /io_uring/io_uring.h | |
parent | 23a6c9ac4dbd7cccf5b909e78aa84192b65f2833 (diff) | |
download | linux-e52d2e583e4ad1d5d0b804d79c2b8752eb0e5ceb.tar.xz |
io_uring: inline io_req_task_work_add()
__io_req_task_work_add() is huge but marked inline, that makes compilers
to generate lots of garbage. Inline the wrapper caller
io_req_task_work_add() instead.
before and after:
text data bss dec hex filename
47347 16248 8 63603 f873 io_uring/io_uring.o
text data bss dec hex filename
45303 16248 8 61559 f077 io_uring/io_uring.o
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/26dc8c28ca0160e3269ef3e55c5a8b917c4d4450.1668162751.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/io_uring.h')
-rw-r--r-- | io_uring/io_uring.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/io_uring/io_uring.h b/io_uring/io_uring.h index cef5ff924e63..38d9e149d2db 100644 --- a/io_uring/io_uring.h +++ b/io_uring/io_uring.h @@ -50,9 +50,9 @@ static inline bool io_req_ffs_set(struct io_kiocb *req) return req->flags & REQ_F_FIXED_FILE; } +void __io_req_task_work_add(struct io_kiocb *req, bool allow_local); bool io_is_uring_fops(struct file *file); bool io_alloc_async_data(struct io_kiocb *req); -void io_req_task_work_add(struct io_kiocb *req); void io_req_tw_post_queue(struct io_kiocb *req, s32 res, u32 cflags); void io_req_task_queue(struct io_kiocb *req); void io_queue_iowq(struct io_kiocb *req, bool *dont_use); @@ -82,6 +82,11 @@ bool __io_alloc_req_refill(struct io_ring_ctx *ctx); bool io_match_task_safe(struct io_kiocb *head, struct task_struct *task, bool cancel_all); +static inline void io_req_task_work_add(struct io_kiocb *req) +{ + __io_req_task_work_add(req, true); +} + #define io_for_each_link(pos, head) \ for (pos = (head); pos; pos = pos->link) |