diff options
author | Divyesh Shah <dpshah@google.com> | 2010-04-09 02:31:19 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2010-04-09 02:31:19 -0400 |
commit | 84c124da9ff50bd71fab9c939ee5b7cd8bef2bd9 (patch) | |
tree | f94ad03b56c71ebbe6b92265054c5e24af25b869 /block/cfq-iosched.c | |
parent | 31373d09da5b7fe21fe6f781e92bd534a3495f00 (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.c | 8 |
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 | ||