diff options
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 | /* |