History

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.

Jens Axboe committed 9 years ago

Commit bd166ef1 parent 2af8cbe17 files · +984 −194Browse files

Showing the changes to include/linux/blkdev.h (1 of 17 files). Show all

Unified · Split

include/linux/blkdev.h+3−1
@@ -154,6 +154,7 @@ struct request { · 153 unmodified lines
154154
155155 /* the following two fields are internal, NEVER access directly */
156156 unsigned int __data_len; /* total data len */
157+ int tag;
157158 sector_t __sector; /* sector cursor */
158159
159160 struct bio *bio;
@@ -220,9 +221,10 @@ struct request { · 60 unmodified lines
220221
221222 unsigned short ioprio;
222223
224+ int internal_tag;
225+
223226 void *special; /* opaque pointer available for LLD use */
224227
225− int tag;
226228 int errors;
227229
228230 /*