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>
Showing
- block/Makefile 1 addition, 1 deletionblock/Makefile
- block/blk-cgroup.c 20 additions, 4 deletionsblock/blk-cgroup.c
- block/blk-core.c 3 additions, 1 deletionblock/blk-core.c
- block/blk-exec.c 2 additions, 1 deletionblock/blk-exec.c
- block/blk-flush.c 7 additions, 5 deletionsblock/blk-flush.c
- block/blk-ioc.c 6 additions, 2 deletionsblock/blk-ioc.c
- block/blk-merge.c 1 addition, 1 deletionblock/blk-merge.c
- block/blk-mq-sched.c 368 additions, 0 deletionsblock/blk-mq-sched.c
- block/blk-mq-sched.h 170 additions, 0 deletionsblock/blk-mq-sched.h
- block/blk-mq-sysfs.c 13 additions, 0 deletionsblock/blk-mq-sysfs.c
- block/blk-mq.c 187 additions, 131 deletionsblock/blk-mq.c
- block/blk-mq.h 7 additions, 1 deletionblock/blk-mq.h
- block/blk-tag.c 1 addition, 0 deletionsblock/blk-tag.c
- block/elevator.c 159 additions, 45 deletionsblock/elevator.c
- include/linux/blk-mq.h 4 additions, 1 deletioninclude/linux/blk-mq.h
- include/linux/blkdev.h 3 additions, 1 deletioninclude/linux/blkdev.h
- include/linux/elevator.h 32 additions, 0 deletionsinclude/linux/elevator.h
Loading
Please register or sign in to comment