* [PATCH] io_uring: refill request cache in memory order
@ 2024-03-26 18:47 Jens Axboe
0 siblings, 0 replies; only message in thread
From: Jens Axboe @ 2024-03-26 18:47 UTC (permalink / raw)
To: io-uring
The allocator will generally return memory in order, but
__io_alloc_req_refill() then adds them to a stack and we'll extract them
in the opposite order. This obviously isn't a huge deal, but:
1) it makes debugging easier when they are in order
2) keeping them in-order is the right thing to do
3) reduces the code for adding them to the stack
Just add them in reverse to the stack.
Signed-off-by: Jens Axboe <[email protected]>
---
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 40a98f6424ab..585fbc363eaf 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -1039,7 +1039,7 @@ __cold bool __io_alloc_req_refill(struct io_ring_ctx *ctx)
{
gfp_t gfp = GFP_KERNEL | __GFP_NOWARN;
void *reqs[IO_REQ_ALLOC_BATCH];
- int ret, i;
+ int ret;
/*
* If we have more than a batch's worth of requests in our IRQ side
@@ -1066,8 +1066,8 @@ __cold bool __io_alloc_req_refill(struct io_ring_ctx *ctx)
}
percpu_ref_get_many(&ctx->refs, ret);
- for (i = 0; i < ret; i++) {
- struct io_kiocb *req = reqs[i];
+ while (ret--) {
+ struct io_kiocb *req = reqs[ret];
io_preinit_req(req, ctx);
io_req_add_to_cache(req, ctx);
--
Jens Axboe
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2024-03-26 18:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-26 18:47 [PATCH] io_uring: refill request cache in memory order Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox