Hi, 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 V3: - 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 V2: - 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 Christoph - no change in the other 4 patches V1: - 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(-) Thanks, Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/