Skip to content

Commit 6c8a313

Browse files
isilenceaxboe
authored andcommitted
io_uring: iterate req cache backwards
Grab requests from cache-array from the end, so can get by only free_reqs. Signed-off-by: Pavel Begunkov <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 3e69426 commit 6c8a313

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

fs/io_uring.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -585,8 +585,7 @@ struct io_submit_state {
585585
* io_kiocb alloc cache
586586
*/
587587
void *reqs[IO_IOPOLL_BATCH];
588-
unsigned int free_reqs;
589-
unsigned int cur_req;
588+
unsigned int free_reqs;
590589

591590
/*
592591
* File reference cache
@@ -1190,12 +1189,10 @@ static struct io_kiocb *io_get_req(struct io_ring_ctx *ctx,
11901189
ret = 1;
11911190
}
11921191
state->free_reqs = ret - 1;
1193-
state->cur_req = 1;
1194-
req = state->reqs[0];
1192+
req = state->reqs[ret - 1];
11951193
} else {
1196-
req = state->reqs[state->cur_req];
11971194
state->free_reqs--;
1198-
state->cur_req++;
1195+
req = state->reqs[state->free_reqs];
11991196
}
12001197

12011198
got_it:
@@ -4849,8 +4846,7 @@ static void io_submit_state_end(struct io_submit_state *state)
48494846
blk_finish_plug(&state->plug);
48504847
io_file_put(state);
48514848
if (state->free_reqs)
4852-
kmem_cache_free_bulk(req_cachep, state->free_reqs,
4853-
&state->reqs[state->cur_req]);
4849+
kmem_cache_free_bulk(req_cachep, state->free_reqs, state->reqs);
48544850
}
48554851

48564852
/*

0 commit comments

Comments
 (0)