[PATCH v3 0/5] block: loop: convert to blk-mq

From: Ming Lei
Date: Wed Dec 31 2014 - 08:24:25 EST


The following 5 patches convert current loop driver into blk-mq:

- loop's throughput of read and randread can get improved much
because of the work queue implementation, also there is opportunity
for blk-mq to merge I/O from loop block
- loop driver gets quite simplified with blk-mq because there is
the whole request based framework and something like flush mechanism,
and the conversion can be throught as cleanup

- rebased on v3.19-rc2-next20141231
- submit I/O via workqueue
- don't handle write requests concurrently
- set flag of BLK_MQ_F_SG_MERGE
- fix failure path in patch 2/5

- replace work queue with kthread worker because wq may cause
regression on some fast devices(such as loop over null_blk, tmpfs
file, ...), in these cases, loop thread becomes CPU bound actually,
so work queue will introduce lots of unnecessary context switch, and
decrease throughput a lot one this cases
- introduce prepare_flush_rq_fn callback and its pair in blk-mq ops
for setting up flush rq's pdu correctly
- move kernel aio patches into another patchset as suggested by
- no change in the other 4 patches

- improve failure path in aio_kernel_submit()

block/blk-mq.c | 4 +-
block/blk-mq.h | 1 -
drivers/block/loop.c | 417 ++++++++++++++++++++++++------------------------
drivers/block/loop.h | 17 +-
include/linux/blk-mq.h | 2 +
5 files changed, 221 insertions(+), 220 deletions(-)

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/