aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/noop-iosched.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2005-10-20 10:42:29 -0400
committerJens Axboe <axboe@nelson.home.kernel.dk>2005-10-28 02:45:08 -0400
commitb4878f245ec8e168cdd1f170f823a750b7dd4af5 (patch)
treede784c2a7e1174e4843807998f0356bf92ee78be /drivers/block/noop-iosched.c
parentd9ebb192aa13a026edc6faff137dcb14f2c91731 (diff)
[PATCH] 02/05: update ioscheds to use generic dispatch queue
This patch updates all four ioscheds to use generic dispatch queue. There's one behavior change in as-iosched. * In as-iosched, when force dispatching (ELEVATOR_INSERT_BACK), batch_data_dir is reset to REQ_SYNC and changed_batch and new_batch are cleared to zero. This prevernts AS from doing incorrect update_write_batch after the forced dispatched requests are finished. * In cfq-iosched, cfqd->rq_in_driver currently counts the number of activated (removed) requests to determine whether queue-kicking is needed and cfq_max_depth has been reached. With generic dispatch queue, I think counting the number of dispatched requests would be more appropriate. * cfq_max_depth can be lowered to 1 again. Original from Tejun Heo, modified version applied. Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'drivers/block/noop-iosched.c')
-rw-r--r--drivers/block/noop-iosched.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/block/noop-iosched.c b/drivers/block/noop-iosched.c
index b1730b62c37e..bc2252b6f2e5 100644
--- a/drivers/block/noop-iosched.c
+++ b/drivers/block/noop-iosched.c
@@ -28,13 +28,9 @@ static void elevator_noop_merge_requests(request_queue_t *q, struct request *req
28 list_del_init(&next->queuelist); 28 list_del_init(&next->queuelist);
29} 29}
30 30
31static void elevator_noop_add_request(request_queue_t *q, struct request *rq, 31static void elevator_noop_add_request(request_queue_t *q, struct request *rq)
32 int where)
33{ 32{
34 if (where == ELEVATOR_INSERT_FRONT) 33 elv_dispatch_add_tail(q, rq);
35 list_add(&rq->queuelist, &q->queue_head);
36 else
37 list_add_tail(&rq->queuelist, &q->queue_head);
38 34
39 /* 35 /*
40 * new merges must not precede this barrier 36 * new merges must not precede this barrier
@@ -45,19 +41,16 @@ static void elevator_noop_add_request(request_queue_t *q, struct request *rq,
45 q->last_merge = rq; 41 q->last_merge = rq;
46} 42}
47 43
48static struct request *elevator_noop_next_request(request_queue_t *q) 44static int elevator_noop_dispatch(request_queue_t *q, int force)
49{ 45{
50 if (!list_empty(&q->queue_head)) 46 return 0;
51 return list_entry_rq(q->queue_head.next);
52
53 return NULL;
54} 47}
55 48
56static struct elevator_type elevator_noop = { 49static struct elevator_type elevator_noop = {
57 .ops = { 50 .ops = {
58 .elevator_merge_fn = elevator_noop_merge, 51 .elevator_merge_fn = elevator_noop_merge,
59 .elevator_merge_req_fn = elevator_noop_merge_requests, 52 .elevator_merge_req_fn = elevator_noop_merge_requests,
60 .elevator_next_req_fn = elevator_noop_next_request, 53 .elevator_dispatch_fn = elevator_noop_dispatch,
61 .elevator_add_req_fn = elevator_noop_add_request, 54 .elevator_add_req_fn = elevator_noop_add_request,
62 }, 55 },
63 .elevator_name = "noop", 56 .elevator_name = "noop",