Skip to content

Commit

Permalink
Deadline iosched: Factor out finding latter reques
Browse files Browse the repository at this point in the history
Factor finding the next request in sector-sorted order into
a function deadline_latter_request.

Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
  • Loading branch information
Aaron Carroll authored and Jens Axboe committed Nov 2, 2007
1 parent 54866f0 commit 5d1a536
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions block/deadline-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,20 @@ static void deadline_move_request(struct deadline_data *, struct request *);

#define RQ_RB_ROOT(dd, rq) (&(dd)->sort_list[rq_data_dir((rq))])

/*
* get the request after `rq' in sector-sorted order
*/
static inline struct request *
deadline_latter_request(struct request *rq)
{
struct rb_node *node = rb_next(&rq->rb_node);

if (node)
return rb_entry_rq(node);

return NULL;
}

static void
deadline_add_rq_rb(struct deadline_data *dd, struct request *rq)
{
Expand All @@ -74,13 +88,8 @@ deadline_del_rq_rb(struct deadline_data *dd, struct request *rq)
{
const int data_dir = rq_data_dir(rq);

if (dd->next_rq[data_dir] == rq) {
struct rb_node *rbnext = rb_next(&rq->rb_node);

dd->next_rq[data_dir] = NULL;
if (rbnext)
dd->next_rq[data_dir] = rb_entry_rq(rbnext);
}
if (dd->next_rq[data_dir] == rq)
dd->next_rq[data_dir] = deadline_latter_request(rq);

elv_rb_del(RQ_RB_ROOT(dd, rq), rq);
}
Expand Down Expand Up @@ -198,14 +207,11 @@ static void
deadline_move_request(struct deadline_data *dd, struct request *rq)
{
const int data_dir = rq_data_dir(rq);
struct rb_node *rbnext = rb_next(&rq->rb_node);

dd->next_rq[READ] = NULL;
dd->next_rq[WRITE] = NULL;
dd->next_rq[data_dir] = deadline_latter_request(rq);

if (rbnext)
dd->next_rq[data_dir] = rb_entry_rq(rbnext);

dd->last_sector = rq->sector + rq->nr_sectors;

/*
Expand Down

0 comments on commit 5d1a536

Please sign in to comment.