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
154 154
155 /* the following two fields are internal, NEVER access directly */155 /* the following two fields are internal, NEVER access directly */
156 unsigned int __data_len; /* total data len */156 unsigned int __data_len; /* total data len */
157 int tag;
157 sector_t __sector; /* sector cursor */158 sector_t __sector; /* sector cursor */
158 159
159 struct bio *bio;160 struct bio *bio;
@@ -220,9 +221,10 @@ struct request { · 60 unmodified lines
220 221
221 unsigned short ioprio;222 unsigned short ioprio;
222 223
224 int internal_tag;
225
223 void *special; /* opaque pointer available for LLD use */226 void *special; /* opaque pointer available for LLD use */
224 227
225 int tag;
226 int errors;228 int errors;
227 229
228 /*230 /*