Currently, ->pd_stat() is called only when moduleparam blkcg_debug_stats is set which prevents it from printing non-debug policy-specific statistics. Let's move debug testing down so that ->pd_stat() can print non-debug stat too. This patch doesn't cause any visible behavior change.
Unified · Split
| @@ -54,7 +54,7 @@ static struct blkcg_policy *blkcg_policy[BLKCG_MAX_POLS]; · 53 unmodified lines | ||
| 54 | 54 | |
| 55 | 55 | static LIST_HEAD(all_blkcgs); /* protected by blkcg_pol_mutex */ |
| 56 | 56 | |
| 57 | −static bool blkcg_debug_stats = false; | |
| 57 | +bool blkcg_debug_stats = false; | |
| 58 | 58 | static struct workqueue_struct *blkcg_punt_bio_wq; |
| 59 | 59 | |
| 60 | 60 | static bool blkcg_policy_enabled(struct request_queue *q, |
| @@ -944,10 +944,7 @@ static int blkcg_print_stat(struct seq_file *sf, void *v) · 883 unmodified lines | ||
| 944 | 944 | dbytes, dios); |
| 945 | 945 | } |
| 946 | 946 | |
| 947 | − if (!blkcg_debug_stats) | |
| 948 | − goto next; | |
| 949 | − | |
| 950 | − if (atomic_read(&blkg->use_delay)) { | |
| 947 | + if (blkcg_debug_stats && atomic_read(&blkg->use_delay)) { | |
| 951 | 948 | has_stats = true; |
| 952 | 949 | off += scnprintf(buf+off, size-off, |
| 953 | 950 | " use_delay=%d delay_nsec=%llu", |
| @@ -967,7 +964,7 @@ static int blkcg_print_stat(struct seq_file *sf, void *v) · 13 unmodified lines | ||
| 967 | 964 | has_stats = true; |
| 968 | 965 | off += written; |
| 969 | 966 | } |
| 970 | −next: | |
| 967 | + | |
| 971 | 968 | if (has_stats) { |
| 972 | 969 | if (off < size - 1) { |
| 973 | 970 | off += scnprintf(buf+off, size-off, "\n"); |
| @@ -917,6 +917,9 @@ static size_t iolatency_pd_stat(struct blkg_policy_data *pd, char *buf, · 916 unmodified lines | ||
| 917 | 917 | unsigned long long avg_lat; |
| 918 | 918 | unsigned long long cur_win; |
| 919 | 919 | |
| 920 | + if (!blkcg_debug_stats) | |
| 921 | + return 0; | |
| 922 | + | |
| 920 | 923 | if (iolat->ssd) |
| 921 | 924 | return iolatency_ssd_stat(iolat, buf, size); |
| 922 | 925 | |
| @@ -181,6 +181,7 @@ struct blkcg_policy { · 180 unmodified lines | ||
| 181 | 181 | |
| 182 | 182 | extern struct blkcg blkcg_root; |
| 183 | 183 | extern struct cgroup_subsys_state * const blkcg_root_css; |
| 184 | +extern bool blkcg_debug_stats; | |
| 184 | 185 | |
| 185 | 186 | struct blkcg_gq *blkg_lookup_slowpath(struct blkcg *blkcg, |
| 186 | 187 | struct request_queue *q, bool update_hint); |