diff options
author | Tejun Heo <htejun@gmail.com> | 2005-10-20 10:23:44 -0400 |
---|---|---|
committer | Jens Axboe <axboe@nelson.home.kernel.dk> | 2005-10-28 02:44:24 -0400 |
commit | 8922e16cf6269e668123acb1ae1fdc62b7a3a4fc (patch) | |
tree | 272bff0b53bf6fe4a7787728a45a26a282ba2976 /include/linux/blkdev.h | |
parent | 2824bc9328467127083c1325f54b67d298c333b2 (diff) |
[PATCH] 01/05 Implement generic dispatch queue
Implements generic dispatch queue which can replace all
dispatch queues implemented by each iosched. This reduces
code duplication, eases enforcing semantics over dispatch
queue, and simplifies specific ioscheds.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r-- | include/linux/blkdev.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index efdc9b5bc05c..2c7b9154927a 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -203,6 +203,7 @@ struct request { | |||
203 | enum rq_flag_bits { | 203 | enum rq_flag_bits { |
204 | __REQ_RW, /* not set, read. set, write */ | 204 | __REQ_RW, /* not set, read. set, write */ |
205 | __REQ_FAILFAST, /* no low level driver retries */ | 205 | __REQ_FAILFAST, /* no low level driver retries */ |
206 | __REQ_SORTED, /* elevator knows about this request */ | ||
206 | __REQ_SOFTBARRIER, /* may not be passed by ioscheduler */ | 207 | __REQ_SOFTBARRIER, /* may not be passed by ioscheduler */ |
207 | __REQ_HARDBARRIER, /* may not be passed by drive either */ | 208 | __REQ_HARDBARRIER, /* may not be passed by drive either */ |
208 | __REQ_CMD, /* is a regular fs rw request */ | 209 | __REQ_CMD, /* is a regular fs rw request */ |
@@ -235,6 +236,7 @@ enum rq_flag_bits { | |||
235 | 236 | ||
236 | #define REQ_RW (1 << __REQ_RW) | 237 | #define REQ_RW (1 << __REQ_RW) |
237 | #define REQ_FAILFAST (1 << __REQ_FAILFAST) | 238 | #define REQ_FAILFAST (1 << __REQ_FAILFAST) |
239 | #define REQ_SORTED (1 << __REQ_SORTED) | ||
238 | #define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER) | 240 | #define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER) |
239 | #define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER) | 241 | #define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER) |
240 | #define REQ_CMD (1 << __REQ_CMD) | 242 | #define REQ_CMD (1 << __REQ_CMD) |
@@ -333,6 +335,13 @@ struct request_queue | |||
333 | end_flush_fn *end_flush_fn; | 335 | end_flush_fn *end_flush_fn; |
334 | 336 | ||
335 | /* | 337 | /* |
338 | * Dispatch queue sorting | ||
339 | */ | ||
340 | sector_t last_sector; | ||
341 | struct request *boundary_rq; | ||
342 | unsigned int max_back_kb; | ||
343 | |||
344 | /* | ||
336 | * Auto-unplugging state | 345 | * Auto-unplugging state |
337 | */ | 346 | */ |
338 | struct timer_list unplug_timer; | 347 | struct timer_list unplug_timer; |
@@ -454,6 +463,7 @@ enum { | |||
454 | #define blk_pm_request(rq) \ | 463 | #define blk_pm_request(rq) \ |
455 | ((rq)->flags & (REQ_PM_SUSPEND | REQ_PM_RESUME)) | 464 | ((rq)->flags & (REQ_PM_SUSPEND | REQ_PM_RESUME)) |
456 | 465 | ||
466 | #define blk_sorted_rq(rq) ((rq)->flags & REQ_SORTED) | ||
457 | #define blk_barrier_rq(rq) ((rq)->flags & REQ_HARDBARRIER) | 467 | #define blk_barrier_rq(rq) ((rq)->flags & REQ_HARDBARRIER) |
458 | #define blk_barrier_preflush(rq) ((rq)->flags & REQ_BAR_PREFLUSH) | 468 | #define blk_barrier_preflush(rq) ((rq)->flags & REQ_BAR_PREFLUSH) |
459 | #define blk_barrier_postflush(rq) ((rq)->flags & REQ_BAR_POSTFLUSH) | 469 | #define blk_barrier_postflush(rq) ((rq)->flags & REQ_BAR_POSTFLUSH) |
@@ -611,12 +621,7 @@ extern void end_request(struct request *req, int uptodate); | |||
611 | 621 | ||
612 | static inline void blkdev_dequeue_request(struct request *req) | 622 | static inline void blkdev_dequeue_request(struct request *req) |
613 | { | 623 | { |
614 | BUG_ON(list_empty(&req->queuelist)); | 624 | elv_dequeue_request(req->q, req); |
615 | |||
616 | list_del_init(&req->queuelist); | ||
617 | |||
618 | if (req->rl) | ||
619 | elv_remove_request(req->q, req); | ||
620 | } | 625 | } |
621 | 626 | ||
622 | /* | 627 | /* |