block: enable bio allocation cache for IRQ driven IO
authorJens Axboe <axboe@kernel.dk>
Thu, 2 Dec 2021 20:14:53 +0000 (13:14 -0700)
committerJens Axboe <axboe@kernel.dk>
Sun, 27 Mar 2022 21:20:13 +0000 (15:20 -0600)
commitab3d4371227a34a5561e4d594a17baaad03bf1b7
tree231fbc302552e2dff9d3d88a02f335b9395c19be
parentf97aa8d53600eeb82571950ce7e6429c4e14a0ea
block: enable bio allocation cache for IRQ driven IO

We currently cannot use the bio recycling allocation cache for IRQ driven
IO, as the cache isn't IRQ safe (by design).

Add a way for the completion side to pass back a bio that needs freeing,
so we can do it from the io_uring side. io_uring completions always
run in task context.

This is good for about a 13% improvement in IRQ driven IO, taking us from
around 6.3M/core to 7.1M/core IOPS.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/fops.c
fs/io_uring.c
include/linux/fs.h