aboutsummaryrefslogtreecommitdiffstats
path: root/block/cfq-iosched.c
diff options
context:
space:
mode:
authorDivyesh Shah <dpshah@google.com>2010-04-09 02:31:19 -0400
committerJens Axboe <jens.axboe@oracle.com>2010-04-09 02:31:19 -0400
commit84c124da9ff50bd71fab9c939ee5b7cd8bef2bd9 (patch)
treef94ad03b56c71ebbe6b92265054c5e24af25b869 /block/cfq-iosched.c
parent31373d09da5b7fe21fe6f781e92bd534a3495f00 (diff)
blkio: Changes to IO controller additional stats patches
that include some minor fixes and addresses all comments. Changelog: (most based on Vivek Goyal's comments) o renamed blkiocg_reset_write to blkiocg_reset_stats o more clarification in the documentation on io_service_time and io_wait_time o Initialize blkg->stats_lock o rename io_add_stat to blkio_add_stat and declare it static o use bool for direction and sync o derive direction and sync info from existing rq methods o use 12 for major:minor string length o define io_service_time better to cover the NCQ case o add a separate reset_stats interface o make the indexed stats a 2d array to simplify macro and function pointer code o blkio.time now exports in jiffies as before o Added stats description in patch description and Documentation/cgroup/blkio-controller.txt o Prefix all stats functions with blkio and make them static as applicable o replace IO_TYPE_MAX with IO_TYPE_TOTAL o Moved #define constant to top of blk-cgroup.c o Pass dev_t around instead of char * o Add note to documentation file about resetting stats o use BLK_CGROUP_MODULE in addition to BLK_CGROUP config option in #ifdef statements o Avoid struct request specific knowledge in blk-cgroup. blk-cgroup.h now has rq_direction() and rq_sync() functions which are used by CFQ and when using io-controller at a higher level, bio_* functions can be added. Signed-off-by: Divyesh Shah<dpshah@google.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r--block/cfq-iosched.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 42028e7128a7..5617ae030b15 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -955,6 +955,7 @@ cfq_find_alloc_cfqg(struct cfq_data *cfqd, struct cgroup *cgroup, int create)
955 for_each_cfqg_st(cfqg, i, j, st) 955 for_each_cfqg_st(cfqg, i, j, st)
956 *st = CFQ_RB_ROOT; 956 *st = CFQ_RB_ROOT;
957 RB_CLEAR_NODE(&cfqg->rb_node); 957 RB_CLEAR_NODE(&cfqg->rb_node);
958 blkio_group_init(&cfqg->blkg);
958 959
959 /* 960 /*
960 * Take the initial reference that will be released on destroy 961 * Take the initial reference that will be released on destroy
@@ -1865,7 +1866,8 @@ static void cfq_dispatch_insert(struct request_queue *q, struct request *rq)
1865 elv_dispatch_sort(q, rq); 1866 elv_dispatch_sort(q, rq);
1866 1867
1867 cfqd->rq_in_flight[cfq_cfqq_sync(cfqq)]++; 1868 cfqd->rq_in_flight[cfq_cfqq_sync(cfqq)]++;
1868 blkiocg_update_request_dispatch_stats(&cfqq->cfqg->blkg, rq); 1869 blkiocg_update_dispatch_stats(&cfqq->cfqg->blkg, blk_rq_bytes(rq),
1870 rq_data_dir(rq), rq_is_sync(rq));
1869} 1871}
1870 1872
1871/* 1873/*
@@ -3286,7 +3288,9 @@ static void cfq_completed_request(struct request_queue *q, struct request *rq)
3286 WARN_ON(!cfqq->dispatched); 3288 WARN_ON(!cfqq->dispatched);
3287 cfqd->rq_in_driver--; 3289 cfqd->rq_in_driver--;
3288 cfqq->dispatched--; 3290 cfqq->dispatched--;
3289 blkiocg_update_request_completion_stats(&cfqq->cfqg->blkg, rq); 3291 blkiocg_update_completion_stats(&cfqq->cfqg->blkg, rq_start_time_ns(rq),
3292 rq_io_start_time_ns(rq), rq_data_dir(rq),
3293 rq_is_sync(rq));
3290 3294
3291 cfqd->rq_in_flight[cfq_cfqq_sync(cfqq)]--; 3295 cfqd->rq_in_flight[cfq_cfqq_sync(cfqq)]--;
3292 3296