|
@@ -610,7 +610,7 @@ void elv_requeue_request(struct request_queue *q, struct request *rq)
|
|
|
|
|
|
rq->cmd_flags &= ~REQ_STARTED;
|
|
|
|
|
|
- elv_insert(q, rq, ELEVATOR_INSERT_REQUEUE);
|
|
|
+ __elv_add_request(q, rq, ELEVATOR_INSERT_REQUEUE);
|
|
|
}
|
|
|
|
|
|
void elv_drain_elevator(struct request_queue *q)
|
|
@@ -655,12 +655,25 @@ void elv_quiesce_end(struct request_queue *q)
|
|
|
queue_flag_clear(QUEUE_FLAG_ELVSWITCH, q);
|
|
|
}
|
|
|
|
|
|
-void elv_insert(struct request_queue *q, struct request *rq, int where)
|
|
|
+void __elv_add_request(struct request_queue *q, struct request *rq, int where)
|
|
|
{
|
|
|
trace_block_rq_insert(q, rq);
|
|
|
|
|
|
rq->q = q;
|
|
|
|
|
|
+ BUG_ON(rq->cmd_flags & REQ_ON_PLUG);
|
|
|
+
|
|
|
+ if (rq->cmd_flags & REQ_SOFTBARRIER) {
|
|
|
+ /* barriers are scheduling boundary, update end_sector */
|
|
|
+ if (rq->cmd_type == REQ_TYPE_FS ||
|
|
|
+ (rq->cmd_flags & REQ_DISCARD)) {
|
|
|
+ q->end_sector = rq_end_sector(rq);
|
|
|
+ q->boundary_rq = rq;
|
|
|
+ }
|
|
|
+ } else if (!(rq->cmd_flags & REQ_ELVPRIV) &&
|
|
|
+ where == ELEVATOR_INSERT_SORT)
|
|
|
+ where = ELEVATOR_INSERT_BACK;
|
|
|
+
|
|
|
switch (where) {
|
|
|
case ELEVATOR_INSERT_REQUEUE:
|
|
|
case ELEVATOR_INSERT_FRONT:
|
|
@@ -722,24 +735,6 @@ void elv_insert(struct request_queue *q, struct request *rq, int where)
|
|
|
BUG();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-void __elv_add_request(struct request_queue *q, struct request *rq, int where)
|
|
|
-{
|
|
|
- BUG_ON(rq->cmd_flags & REQ_ON_PLUG);
|
|
|
-
|
|
|
- if (rq->cmd_flags & REQ_SOFTBARRIER) {
|
|
|
- /* barriers are scheduling boundary, update end_sector */
|
|
|
- if (rq->cmd_type == REQ_TYPE_FS ||
|
|
|
- (rq->cmd_flags & REQ_DISCARD)) {
|
|
|
- q->end_sector = rq_end_sector(rq);
|
|
|
- q->boundary_rq = rq;
|
|
|
- }
|
|
|
- } else if (!(rq->cmd_flags & REQ_ELVPRIV) &&
|
|
|
- where == ELEVATOR_INSERT_SORT)
|
|
|
- where = ELEVATOR_INSERT_BACK;
|
|
|
-
|
|
|
- elv_insert(q, rq, where);
|
|
|
-}
|
|
|
EXPORT_SYMBOL(__elv_add_request);
|
|
|
|
|
|
void elv_add_request(struct request_queue *q, struct request *rq, int where)
|