blk-mq-sched: add framework for MQ capable IO schedulers
authorJens Axboe <axboe@fb.com>
Wed, 11 Jan 2017 20:10:59 +0000 (13:10 -0700)
committerJens Axboe <axboe@fb.com>
Wed, 11 Jan 2017 21:30:10 +0000 (14:30 -0700)
commit78993e2ab0f7dabc44dfe2fed8e578a8de1617cc
treed4e9966a827f7f8aadb4aa3c8ad1eaf2ee5139fd
parent738042d5db927fe70d947a54bb8966d5c68e1195
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
independent of device queue depth.

Signed-off-by: Jens Axboe <axboe@fb.com>
16 files changed:
block/Makefile
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