blk-mq-sched: add framework for MQ capable IO schedulers
authorJens Axboe <axboe@fb.com>
Tue, 17 Jan 2017 13:03:22 +0000 (06:03 -0700)
committerJens Axboe <axboe@fb.com>
Tue, 17 Jan 2017 17:04:20 +0000 (10:04 -0700)
commitbd166ef183c263c5ced656d49ef19c7da4adc774
tree449bbd3b4e671b370b96e3846b2281116e7089e9
parent2af8cbe30531eca73c8f3ba277f155fc0020b01a
blk-mq-sched: add framework for MQ capable IO schedulers

This adds a set of hooks that intercepts the blk-mq path of
allocating/inserting/issuing/completing requests, allowing
us to develop a scheduler within that framework.

We reuse the existing elevator scheduler API on the registration
side, but augment that with the scheduler flagging support for
the blk-mq interfce, and with a separate set of ops hooks for MQ
devices.

We split driver and scheduler tags, so we can run the scheduling
independently of device queue depth.

Signed-off-by: Jens Axboe <axboe@fb.com>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
17 files changed:
block/Makefile
block/blk-cgroup.c
block/blk-core.c
block/blk-exec.c
block/blk-flush.c
block/blk-ioc.c
block/blk-merge.c
block/blk-mq-sched.c [new file with mode: 0644]
block/blk-mq-sched.h [new file with mode: 0644]
block/blk-mq-sysfs.c
block/blk-mq.c
block/blk-mq.h
block/blk-tag.c
block/elevator.c
include/linux/blk-mq.h
include/linux/blkdev.h
include/linux/elevator.h