Message ID | 20250228235916.670437-1-csander@purestorage.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/5] io_uring/rsrc: split out io_free_node() helper | expand |
Hi, > -----Original Message----- > From: Caleb Sander Mateos <csander@purestorage.com> > Sent: Saturday, March 1, 2025 7:59 AM > To: Jens Axboe <axboe@kernel.dk>; Pavel Begunkov <asml.silence@gmail.com> > Cc: Caleb Sander Mateos <csander@purestorage.com>; io- > uring@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH 1/5] io_uring/rsrc: split out io_free_node() helper > > Split the freeing of the io_rsrc_node from io_free_rsrc_node(), for use with > nodes that haven't been fully initialized. > > Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> > --- > io_uring/rsrc.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c index 45bfb37bca1e..d941256f0d8c > 100644 > --- a/io_uring/rsrc.c > +++ b/io_uring/rsrc.c > @@ -485,10 +485,16 @@ int io_files_update(struct io_kiocb *req, unsigned int > issue_flags) > req_set_fail(req); > io_req_set_res(req, ret, 0); > return IOU_OK; > } > > +static void io_free_node(struct io_ring_ctx *ctx, struct io_rsrc_node > +*node) { Would it be better to take a io_alloc_cache as parameter and put it into alloc_cache.h as a general function, so other modules can use it too, just like io_uring/futex. > + if (!io_alloc_cache_put(&ctx->node_cache, node)) > + kvfree(node); > +} > + > void io_free_rsrc_node(struct io_ring_ctx *ctx, struct io_rsrc_node *node) { > if (node->tag) > io_post_aux_cqe(ctx, node->tag, 0, 0); > > @@ -504,12 +510,11 @@ void io_free_rsrc_node(struct io_ring_ctx *ctx, > struct io_rsrc_node *node) > default: > WARN_ON_ONCE(1); > break; > } > > - if (!io_alloc_cache_put(&ctx->node_cache, node)) > - kvfree(node); > + io_free_node(ctx, node); > } > > int io_sqe_files_unregister(struct io_ring_ctx *ctx) { > if (!ctx->file_table.data.nr) > -- > 2.45.2 > --- Li Zetao
diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c index 45bfb37bca1e..d941256f0d8c 100644 --- a/io_uring/rsrc.c +++ b/io_uring/rsrc.c @@ -485,10 +485,16 @@ int io_files_update(struct io_kiocb *req, unsigned int issue_flags) req_set_fail(req); io_req_set_res(req, ret, 0); return IOU_OK; } +static void io_free_node(struct io_ring_ctx *ctx, struct io_rsrc_node *node) +{ + if (!io_alloc_cache_put(&ctx->node_cache, node)) + kvfree(node); +} + void io_free_rsrc_node(struct io_ring_ctx *ctx, struct io_rsrc_node *node) { if (node->tag) io_post_aux_cqe(ctx, node->tag, 0, 0); @@ -504,12 +510,11 @@ void io_free_rsrc_node(struct io_ring_ctx *ctx, struct io_rsrc_node *node) default: WARN_ON_ONCE(1); break; } - if (!io_alloc_cache_put(&ctx->node_cache, node)) - kvfree(node); + io_free_node(ctx, node); } int io_sqe_files_unregister(struct io_ring_ctx *ctx) { if (!ctx->file_table.data.nr)
Split the freeing of the io_rsrc_node from io_free_rsrc_node(), for use with nodes that haven't been fully initialized. Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> --- io_uring/rsrc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)