Commit 5d1a5366 authored by Aaron Carroll's avatar Aaron Carroll Committed by Jens Axboe

Deadline iosched: Factor out finding latter reques

Factor finding the next request in sector-sorted order into
a function deadline_latter_request.
Signed-off-by: default avatarAaron Carroll <aaronc@gelato.unsw.edu.au>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 54866f03
...@@ -55,6 +55,20 @@ static void deadline_move_request(struct deadline_data *, struct request *); ...@@ -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))]) #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 static void
deadline_add_rq_rb(struct deadline_data *dd, struct request *rq) deadline_add_rq_rb(struct deadline_data *dd, struct request *rq)
{ {
...@@ -74,13 +88,8 @@ deadline_del_rq_rb(struct deadline_data *dd, struct request *rq) ...@@ -74,13 +88,8 @@ deadline_del_rq_rb(struct deadline_data *dd, struct request *rq)
{ {
const int data_dir = rq_data_dir(rq); const int data_dir = rq_data_dir(rq);
if (dd->next_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] = deadline_latter_request(rq);
dd->next_rq[data_dir] = NULL;
if (rbnext)
dd->next_rq[data_dir] = rb_entry_rq(rbnext);
}
elv_rb_del(RQ_RB_ROOT(dd, rq), rq); elv_rb_del(RQ_RB_ROOT(dd, rq), rq);
} }
...@@ -198,14 +207,11 @@ static void ...@@ -198,14 +207,11 @@ static void
deadline_move_request(struct deadline_data *dd, struct request *rq) deadline_move_request(struct deadline_data *dd, struct request *rq)
{ {
const int data_dir = rq_data_dir(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[READ] = NULL;
dd->next_rq[WRITE] = 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; dd->last_sector = rq->sector + rq->nr_sectors;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment