/* * move request from sort list to dispatch queue. */ static inline void deadline_move_to_dispatch(struct deadline_data *dd, struct deadline_rq *drq) { request_queue_t *q = drq->request->q; deadline_remove_request(q, drq->request); list_add_tail(&drq->request->queuelist, dd->dispatch); }
/* * move request from sort list to dispatch queue. */ static inline void deadline_move_to_dispatch(struct deadline_data *dd, struct request *rq) { struct request_queue *q = rq->q; deadline_remove_request(q, rq); elv_dispatch_add_tail(q, rq); }
void ElvDeadline::ElvMergeRequests(request *rq, request *next) { /* TODO: if next expires before rq, assign its expire time to * rq and mobe into next position (next will be deleted) in fifo */ /* if (!rq->Empty() && !next->Empty()) { assert(0); }*/ deadline_remove_request(next); Elevator::ElvMergeRequests(rq, next); }
static void deadline_merged_requests(struct request_queue *q, struct request *req, struct request *next) { if (!list_empty(&req->queuelist) && !list_empty(&next->queuelist)) { if (time_before(rq_fifo_time(next), rq_fifo_time(req))) { list_move(&req->queuelist, &next->queuelist); rq_set_fifo_time(req, rq_fifo_time(next)); } } deadline_remove_request(q, next); }
static void deadline_merged_requests(struct request_queue *q, struct request *req, struct request *next) { /* * if next expires before rq, assign its expire time to rq * and move into next position (next will be deleted) in fifo */ if (!list_empty(&req->queuelist) && !list_empty(&next->queuelist)) { if (time_before(rq_fifo_time(next), rq_fifo_time(req))) { list_move(&req->queuelist, &next->queuelist); rq_set_fifo_time(req, rq_fifo_time(next)); } } /* * kill knowledge of next, this one is a goner */ deadline_remove_request(q, next); }
static void deadline_merged_requests(request_queue_t *q, struct request *req, struct request *next) { struct deadline_data *dd = q->elevator->elevator_data; struct deadline_rq *drq = RQ_DATA(req); struct deadline_rq *dnext = RQ_DATA(next); BUG_ON(!drq); BUG_ON(!dnext); /* * reposition drq (this is the merged request) in hash, and in rbtree * in case of a front merge */ deadline_del_drq_hash(drq); deadline_add_drq_hash(dd, drq); if (rq_rb_key(req) != drq->rb_key) { deadline_del_drq_rb(dd, drq); deadline_add_drq_rb(dd, drq); } /* * if dnext expires before drq, assign its expire time to drq * and move into dnext position (dnext will be deleted) in fifo */ if (!list_empty(&drq->fifo) && !list_empty(&dnext->fifo)) { if (time_before(dnext->expires, drq->expires)) { list_move(&drq->fifo, &dnext->fifo); drq->expires = dnext->expires; } } /* * kill knowledge of next, this one is a goner */ deadline_remove_request(q, next); }
void ElvDeadline::deadline_move_to_dispatch(request *rq) { deadline_remove_request(rq); elv_dispatch_add_tail(rq); }