[PATCH v1 0/9] block & aio: kernel aio and loop mq conversion

From: Ming Lei
Date: Thu Aug 14 2014 - 11:51:04 EST


Hi,

The 1st two patches introduce kernel AIO support, most of
is borrowed from Dave's work last year, and thanks to ITER_BVEC,
it is much simper to implement kernel AIO now. AIO model
is quite suitable for implementing kernel stuff, and can
help improve both throughput and CPU utilization. Lots of
kernel components should benefit from it, such as:
- loop driver,
- all kinds of kernel I/O target driver(SCSI, USB storage
or UAS, ...)
- kernel socket users might benefit from it too if socket
AIO is mature

The following 6 patches convert current loop driver into blk-mq:
- loop's scalability gets improved much
- loop driver gets quite simplified, and the conversion can
be throught as cleanup too

The 9th patch uses kernel AIO with O_DIRECT to improve loop's
performance in single job situation, and avoid double cache
issue for loop driver too.

With the change, loop block's performance can be doubled in my
fio test(randread, single job, libaio). If more fio jobs are used,
the throughput can be improved much more because of blk-mq.

Given loop is used quite widely, especially in VM environment,
also the change is quite small, hope it can be merged finally.

V1:
- improve failure path in aio_kernel_submit()


block/blk-mq.c | 11 +-
block/blk-mq.h | 1 -
drivers/block/loop.c | 474 +++++++++++++++++++++++++--------------------
drivers/block/loop.h | 15 +-
fs/aio.c | 121 ++++++++++++
fs/direct-io.c | 9 +-
include/linux/aio.h | 15 +-
include/linux/blk-mq.h | 13 ++
include/uapi/linux/loop.h | 1 +
9 files changed, 439 insertions(+), 221 deletions(-)


Thanks,
--
Ming Lei


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/