]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - block/bfq-cgroup.c
block, bfq: move debug blkio stats behind CONFIG_DEBUG_BLK_CGROUP
[mirror_ubuntu-bionic-kernel.git] / block / bfq-cgroup.c
index ceefb9a706d64c3a520c80fb39bc8265b1c144c0..da1525ec4c87560a447d2698b5ee30bff13a9c1c 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "bfq-iosched.h"
 
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) &&  defined(CONFIG_DEBUG_BLK_CGROUP)
 
 /* bfqg stats flags */
 enum bfqg_stats_flags {
@@ -152,6 +152,57 @@ void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg)
        bfqg_stats_update_group_wait_time(stats);
 }
 
+void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
+                             unsigned int op)
+{
+       blkg_rwstat_add(&bfqg->stats.queued, op, 1);
+       bfqg_stats_end_empty_time(&bfqg->stats);
+       if (!(bfqq == ((struct bfq_data *)bfqg->bfqd)->in_service_queue))
+               bfqg_stats_set_start_group_wait_time(bfqg, bfqq_group(bfqq));
+}
+
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op)
+{
+       blkg_rwstat_add(&bfqg->stats.queued, op, -1);
+}
+
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op)
+{
+       blkg_rwstat_add(&bfqg->stats.merged, op, 1);
+}
+
+void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
+                                 uint64_t io_start_time, unsigned int op)
+{
+       struct bfqg_stats *stats = &bfqg->stats;
+       unsigned long long now = sched_clock();
+
+       if (time_after64(now, io_start_time))
+               blkg_rwstat_add(&stats->service_time, op,
+                               now - io_start_time);
+       if (time_after64(io_start_time, start_time))
+               blkg_rwstat_add(&stats->wait_time, op,
+                               io_start_time - start_time);
+}
+
+#else /* CONFIG_BFQ_GROUP_IOSCHED && CONFIG_DEBUG_BLK_CGROUP */
+
+void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
+                             unsigned int op) { }
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op) { }
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op) { }
+void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
+                                 uint64_t io_start_time, unsigned int op) { }
+void bfqg_stats_update_dequeue(struct bfq_group *bfqg) { }
+void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg) { }
+void bfqg_stats_update_idle_time(struct bfq_group *bfqg) { }
+void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg) { }
+void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg) { }
+
+#endif /* CONFIG_BFQ_GROUP_IOSCHED && CONFIG_DEBUG_BLK_CGROUP */
+
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+
 /*
  * blk-cgroup policy-related handlers
  * The following functions help in converting between blk-cgroup
@@ -229,42 +280,10 @@ void bfqg_and_blkg_put(struct bfq_group *bfqg)
        blkg_put(bfqg_to_blkg(bfqg));
 }
 
-void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
-                             unsigned int op)
-{
-       blkg_rwstat_add(&bfqg->stats.queued, op, 1);
-       bfqg_stats_end_empty_time(&bfqg->stats);
-       if (!(bfqq == ((struct bfq_data *)bfqg->bfqd)->in_service_queue))
-               bfqg_stats_set_start_group_wait_time(bfqg, bfqq_group(bfqq));
-}
-
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op)
-{
-       blkg_rwstat_add(&bfqg->stats.queued, op, -1);
-}
-
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op)
-{
-       blkg_rwstat_add(&bfqg->stats.merged, op, 1);
-}
-
-void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
-                                 uint64_t io_start_time, unsigned int op)
-{
-       struct bfqg_stats *stats = &bfqg->stats;
-       unsigned long long now = sched_clock();
-
-       if (time_after64(now, io_start_time))
-               blkg_rwstat_add(&stats->service_time, op,
-                               now - io_start_time);
-       if (time_after64(io_start_time, start_time))
-               blkg_rwstat_add(&stats->wait_time, op,
-                               io_start_time - start_time);
-}
-
 /* @stats = 0 */
 static void bfqg_stats_reset(struct bfqg_stats *stats)
 {
+#ifdef CONFIG_DEBUG_BLK_CGROUP
        /* queued stats shouldn't be cleared */
        blkg_rwstat_reset(&stats->merged);
        blkg_rwstat_reset(&stats->service_time);
@@ -276,6 +295,7 @@ static void bfqg_stats_reset(struct bfqg_stats *stats)
        blkg_stat_reset(&stats->group_wait_time);
        blkg_stat_reset(&stats->idle_time);
        blkg_stat_reset(&stats->empty_time);
+#endif
 }
 
 /* @to += @from */
@@ -284,6 +304,7 @@ static void bfqg_stats_add_aux(struct bfqg_stats *to, struct bfqg_stats *from)
        if (!to || !from)
                return;
 
+#ifdef CONFIG_DEBUG_BLK_CGROUP
        /* queued stats shouldn't be cleared */
        blkg_rwstat_add_aux(&to->merged, &from->merged);
        blkg_rwstat_add_aux(&to->service_time, &from->service_time);
@@ -296,6 +317,7 @@ static void bfqg_stats_add_aux(struct bfqg_stats *to, struct bfqg_stats *from)
        blkg_stat_add_aux(&to->group_wait_time, &from->group_wait_time);
        blkg_stat_add_aux(&to->idle_time, &from->idle_time);
        blkg_stat_add_aux(&to->empty_time, &from->empty_time);
+#endif
 }
 
 /*
@@ -342,6 +364,7 @@ void bfq_init_entity(struct bfq_entity *entity, struct bfq_group *bfqg)
 
 static void bfqg_stats_exit(struct bfqg_stats *stats)
 {
+#ifdef CONFIG_DEBUG_BLK_CGROUP
        blkg_rwstat_exit(&stats->merged);
        blkg_rwstat_exit(&stats->service_time);
        blkg_rwstat_exit(&stats->wait_time);
@@ -353,10 +376,12 @@ static void bfqg_stats_exit(struct bfqg_stats *stats)
        blkg_stat_exit(&stats->group_wait_time);
        blkg_stat_exit(&stats->idle_time);
        blkg_stat_exit(&stats->empty_time);
+#endif
 }
 
 static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp)
 {
+#ifdef CONFIG_DEBUG_BLK_CGROUP
        if (blkg_rwstat_init(&stats->merged, gfp) ||
            blkg_rwstat_init(&stats->service_time, gfp) ||
            blkg_rwstat_init(&stats->wait_time, gfp) ||
@@ -371,6 +396,7 @@ static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp)
                bfqg_stats_exit(stats);
                return -ENOMEM;
        }
+#endif
 
        return 0;
 }
@@ -887,6 +913,7 @@ static ssize_t bfq_io_set_weight(struct kernfs_open_file *of,
        return bfq_io_set_weight_legacy(of_css(of), NULL, weight);
 }
 
+#ifdef CONFIG_DEBUG_BLK_CGROUP
 static int bfqg_print_stat(struct seq_file *sf, void *v)
 {
        blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), blkg_prfill_stat,
@@ -991,6 +1018,7 @@ static int bfqg_print_avg_queue_size(struct seq_file *sf, void *v)
                          0, false);
        return 0;
 }
+#endif /* CONFIG_DEBUG_BLK_CGROUP */
 
 struct bfq_group *bfq_create_group_hierarchy(struct bfq_data *bfqd, int node)
 {
@@ -1028,15 +1056,6 @@ struct cftype bfq_blkcg_legacy_files[] = {
        },
 
        /* statistics, covers only the tasks in the bfqg */
-       {
-               .name = "bfq.time",
-               .private = offsetof(struct bfq_group, stats.time),
-               .seq_show = bfqg_print_stat,
-       },
-       {
-               .name = "bfq.sectors",
-               .seq_show = bfqg_print_stat_sectors,
-       },
        {
                .name = "bfq.io_service_bytes",
                .private = (unsigned long)&blkcg_policy_bfq,
@@ -1047,6 +1066,16 @@ struct cftype bfq_blkcg_legacy_files[] = {
                .private = (unsigned long)&blkcg_policy_bfq,
                .seq_show = blkg_print_stat_ios,
        },
+#ifdef CONFIG_DEBUG_BLK_CGROUP
+       {
+               .name = "bfq.time",
+               .private = offsetof(struct bfq_group, stats.time),
+               .seq_show = bfqg_print_stat,
+       },
+       {
+               .name = "bfq.sectors",
+               .seq_show = bfqg_print_stat_sectors,
+       },
        {
                .name = "bfq.io_service_time",
                .private = offsetof(struct bfq_group, stats.service_time),
@@ -1067,17 +1096,9 @@ struct cftype bfq_blkcg_legacy_files[] = {
                .private = offsetof(struct bfq_group, stats.queued),
                .seq_show = bfqg_print_rwstat,
        },
+#endif /* CONFIG_DEBUG_BLK_CGROUP */
 
        /* the same statictics which cover the bfqg and its descendants */
-       {
-               .name = "bfq.time_recursive",
-               .private = offsetof(struct bfq_group, stats.time),
-               .seq_show = bfqg_print_stat_recursive,
-       },
-       {
-               .name = "bfq.sectors_recursive",
-               .seq_show = bfqg_print_stat_sectors_recursive,
-       },
        {
                .name = "bfq.io_service_bytes_recursive",
                .private = (unsigned long)&blkcg_policy_bfq,
@@ -1088,6 +1109,16 @@ struct cftype bfq_blkcg_legacy_files[] = {
                .private = (unsigned long)&blkcg_policy_bfq,
                .seq_show = blkg_print_stat_ios_recursive,
        },
+#ifdef CONFIG_DEBUG_BLK_CGROUP
+       {
+               .name = "bfq.time_recursive",
+               .private = offsetof(struct bfq_group, stats.time),
+               .seq_show = bfqg_print_stat_recursive,
+       },
+       {
+               .name = "bfq.sectors_recursive",
+               .seq_show = bfqg_print_stat_sectors_recursive,
+       },
        {
                .name = "bfq.io_service_time_recursive",
                .private = offsetof(struct bfq_group, stats.service_time),
@@ -1132,6 +1163,7 @@ struct cftype bfq_blkcg_legacy_files[] = {
                .private = offsetof(struct bfq_group, stats.dequeue),
                .seq_show = bfqg_print_stat,
        },
+#endif /* CONFIG_DEBUG_BLK_CGROUP */
        { }     /* terminate */
 };
 
@@ -1147,18 +1179,6 @@ struct cftype bfq_blkg_files[] = {
 
 #else  /* CONFIG_BFQ_GROUP_IOSCHED */
 
-void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
-                             unsigned int op) { }
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op) { }
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op) { }
-void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
-                                 uint64_t io_start_time, unsigned int op) { }
-void bfqg_stats_update_dequeue(struct bfq_group *bfqg) { }
-void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg) { }
-void bfqg_stats_update_idle_time(struct bfq_group *bfqg) { }
-void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg) { }
-void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg) { }
-
 void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
                   struct bfq_group *bfqg) {}