diff options
| author | Pavel Begunkov <asml.silence@gmail.com> | 2025-02-05 11:36:46 +0000 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2025-02-17 05:34:45 -0700 |
| commit | 13ee854e7c04236a47a5beaacdcf51eb0bc7a8fa (patch) | |
| tree | 39868bf1a91980edf9fdce60781d3f188cb71e1e /io_uring/kbuf.h | |
| parent | dc39fb1093ea33019f192c93b77b863282e10162 (diff) | |
io_uring/kbuf: remove legacy kbuf caching
Remove all struct io_buffer caches. It makes it a fair bit simpler.
Apart from from killing a bunch of lines and juggling between lists,
__io_put_kbuf_list() doesn't need ->completion_lock locking now.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/18287217466ee2576ea0b1e72daccf7b22c7e856.1738724373.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/kbuf.h')
| -rw-r--r-- | io_uring/kbuf.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/io_uring/kbuf.h b/io_uring/kbuf.h index 1f2877064829..c0b9636c5c4a 100644 --- a/io_uring/kbuf.h +++ b/io_uring/kbuf.h @@ -166,8 +166,9 @@ static inline void __io_put_kbuf_list(struct io_kiocb *req, int len) __io_put_kbuf_ring(req, len, 1); } else { req->buf_index = req->kbuf->bgid; - list_add(&req->kbuf->list, &req->ctx->io_buffers_comp); req->flags &= ~REQ_F_BUFFER_SELECTED; + kfree(req->kbuf); + req->kbuf = NULL; } } @@ -176,10 +177,8 @@ static inline void io_kbuf_drop(struct io_kiocb *req) if (!(req->flags & (REQ_F_BUFFER_SELECTED|REQ_F_BUFFER_RING))) return; - spin_lock(&req->ctx->completion_lock); /* len == 0 is fine here, non-ring will always drop all of it */ __io_put_kbuf_list(req, 0); - spin_unlock(&req->ctx->completion_lock); } static inline unsigned int __io_put_kbufs(struct io_kiocb *req, int len, |
