return NULL;
}
-static void cfq_deactivate_request(request_queue_t *q, struct request *rq)
+/*
+ * make sure the service time gets corrected on reissue of this request
+ */
+static void cfq_requeue_request(request_queue_t *q, struct request *rq)
{
struct cfq_rq *crq = RQ_DATA(rq);
cfq_sort_rr_list(cfqq, 0);
}
- if (crq->accounted) {
- crq->accounted = 0;
- cfqq->cfqd->rq_in_driver--;
- }
+ crq->accounted = 0;
+ cfqq->cfqd->rq_in_driver--;
}
-}
-
-/*
- * make sure the service time gets corrected on reissue of this request
- */
-static void cfq_requeue_request(request_queue_t *q, struct request *rq)
-{
- cfq_deactivate_request(q, rq);
list_add(&rq->queuelist, &q->queue_head);
}
if (new_cfqq) {
cfqq = new_cfqq;
new_cfqq = NULL;
- } else {
+ } else if (gfp_mask & __GFP_WAIT) {
spin_unlock_irq(cfqd->queue->queue_lock);
new_cfqq = kmem_cache_alloc(cfq_pool, gfp_mask);
spin_lock_irq(cfqd->queue->queue_lock);
-
- if (!new_cfqq && !(gfp_mask & __GFP_WAIT))
- goto out;
-
goto retry;
- }
+ } else
+ goto out;
memset(cfqq, 0, sizeof(*cfqq));
static void cfq_completed_request(request_queue_t *q, struct request *rq)
{
struct cfq_rq *crq = RQ_DATA(rq);
- struct cfq_queue *cfqq;
if (unlikely(!blk_fs_request(rq)))
return;
- cfqq = crq->cfq_queue;
-
if (crq->in_flight) {
+ struct cfq_queue *cfqq = crq->cfq_queue;
+
WARN_ON(!cfqq->in_flight);
cfqq->in_flight--;
+
+ cfq_account_completion(cfqq, crq);
}
- cfq_account_completion(cfqq, crq);
}
static struct request *
.store = cfq_attr_store,
};
-static struct kobj_type cfq_ktype = {
+struct kobj_type cfq_ktype = {
.sysfs_ops = &cfq_sysfs_ops,
.default_attrs = default_attrs,
};
.elevator_add_req_fn = cfq_insert_request,
.elevator_remove_req_fn = cfq_remove_request,
.elevator_requeue_req_fn = cfq_requeue_request,
- .elevator_deactivate_req_fn = cfq_deactivate_request,
.elevator_queue_empty_fn = cfq_queue_empty,
.elevator_completed_req_fn = cfq_completed_request,
.elevator_former_req_fn = cfq_former_request,
.elevator_owner = THIS_MODULE,
};
-static int __init cfq_init(void)
+int cfq_init(void)
{
int ret;