mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
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: Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
54866f0323
commit
5d1a536621
1 changed files with 17 additions and 11 deletions
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue