Skip to content

Commit

Permalink
elevator: abstract out the activate and deactivate functions
Browse files Browse the repository at this point in the history
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Jens Axboe authored and Jens Axboe committed Feb 11, 2007
1 parent 958b7f3 commit cad9751
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions block/elevator.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,22 @@ void elevator_exit(elevator_t *e)

EXPORT_SYMBOL(elevator_exit);

static void elv_activate_rq(request_queue_t *q, struct request *rq)
{
elevator_t *e = q->elevator;

if (e->ops->elevator_activate_req_fn)
e->ops->elevator_activate_req_fn(q, rq);
}

static void elv_deactivate_rq(request_queue_t *q, struct request *rq)
{
elevator_t *e = q->elevator;

if (e->ops->elevator_deactivate_req_fn)
e->ops->elevator_deactivate_req_fn(q, rq);
}

static inline void __elv_rqhash_del(struct request *rq)
{
hlist_del_init(&rq->hash);
Expand Down Expand Up @@ -498,16 +514,14 @@ void elv_merge_requests(request_queue_t *q, struct request *rq,

void elv_requeue_request(request_queue_t *q, struct request *rq)
{
elevator_t *e = q->elevator;

/*
* it already went through dequeue, we need to decrement the
* in_flight count again
*/
if (blk_account_rq(rq)) {
q->in_flight--;
if (blk_sorted_rq(rq) && e->ops->elevator_deactivate_req_fn)
e->ops->elevator_deactivate_req_fn(q, rq);
if (blk_sorted_rq(rq))
elv_deactivate_rq(q, rq);
}

rq->cmd_flags &= ~REQ_STARTED;
Expand Down Expand Up @@ -700,16 +714,13 @@ struct request *elv_next_request(request_queue_t *q)

while ((rq = __elv_next_request(q)) != NULL) {
if (!(rq->cmd_flags & REQ_STARTED)) {
elevator_t *e = q->elevator;

/*
* This is the first time the device driver
* sees this request (possibly after
* requeueing). Notify IO scheduler.
*/
if (blk_sorted_rq(rq) &&
e->ops->elevator_activate_req_fn)
e->ops->elevator_activate_req_fn(q, rq);
if (blk_sorted_rq(rq))
elv_activate_rq(q, rq);

/*
* just mark as started even if we don't start
Expand Down

0 comments on commit cad9751

Please sign in to comment.