|
@@ -1508,6 +1508,29 @@ static void cfq_init_cfqg_base(struct cfq_group *cfqg)
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_CFQ_GROUP_IOSCHED
|
|
|
+static void cfqg_stats_init(struct cfqg_stats *stats)
|
|
|
+{
|
|
|
+ blkg_rwstat_init(&stats->service_bytes);
|
|
|
+ blkg_rwstat_init(&stats->serviced);
|
|
|
+ blkg_rwstat_init(&stats->merged);
|
|
|
+ blkg_rwstat_init(&stats->service_time);
|
|
|
+ blkg_rwstat_init(&stats->wait_time);
|
|
|
+ blkg_rwstat_init(&stats->queued);
|
|
|
+
|
|
|
+ blkg_stat_init(&stats->sectors);
|
|
|
+ blkg_stat_init(&stats->time);
|
|
|
+
|
|
|
+#ifdef CONFIG_DEBUG_BLK_CGROUP
|
|
|
+ blkg_stat_init(&stats->unaccounted_time);
|
|
|
+ blkg_stat_init(&stats->avg_queue_size_sum);
|
|
|
+ blkg_stat_init(&stats->avg_queue_size_samples);
|
|
|
+ blkg_stat_init(&stats->dequeue);
|
|
|
+ blkg_stat_init(&stats->group_wait_time);
|
|
|
+ blkg_stat_init(&stats->idle_time);
|
|
|
+ blkg_stat_init(&stats->empty_time);
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
static void cfq_pd_init(struct blkcg_gq *blkg)
|
|
|
{
|
|
|
struct cfq_group *cfqg = blkg_to_cfqg(blkg);
|
|
@@ -1515,6 +1538,8 @@ static void cfq_pd_init(struct blkcg_gq *blkg)
|
|
|
cfq_init_cfqg_base(cfqg);
|
|
|
cfqg->weight = blkg->blkcg->cfq_weight;
|
|
|
cfqg->leaf_weight = blkg->blkcg->cfq_leaf_weight;
|
|
|
+ cfqg_stats_init(&cfqg->stats);
|
|
|
+ cfqg_stats_init(&cfqg->dead_stats);
|
|
|
}
|
|
|
|
|
|
static void cfq_pd_offline(struct blkcg_gq *blkg)
|