block: Fix writeback throttling W=1 compiler warnings
[linux-2.6-block.git] / include / trace / events / wbt.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM wbt
4
5 #if !defined(_TRACE_WBT_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_WBT_H
7
8 #include <linux/tracepoint.h>
9 #include "../../../block/blk-wbt.h"
10
11 /**
12  * wbt_stat - trace stats for blk_wb
13  * @stat: array of read/write stats
14  */
15 TRACE_EVENT(wbt_stat,
16
17         TP_PROTO(struct backing_dev_info *bdi, struct blk_rq_stat *stat),
18
19         TP_ARGS(bdi, stat),
20
21         TP_STRUCT__entry(
22                 __array(char, name, 32)
23                 __field(s64, rmean)
24                 __field(u64, rmin)
25                 __field(u64, rmax)
26                 __field(s64, rnr_samples)
27                 __field(s64, rtime)
28                 __field(s64, wmean)
29                 __field(u64, wmin)
30                 __field(u64, wmax)
31                 __field(s64, wnr_samples)
32                 __field(s64, wtime)
33         ),
34
35         TP_fast_assign(
36                 strlcpy(__entry->name, dev_name(bdi->dev),
37                         ARRAY_SIZE(__entry->name));
38                 __entry->rmean          = stat[0].mean;
39                 __entry->rmin           = stat[0].min;
40                 __entry->rmax           = stat[0].max;
41                 __entry->rnr_samples    = stat[0].nr_samples;
42                 __entry->wmean          = stat[1].mean;
43                 __entry->wmin           = stat[1].min;
44                 __entry->wmax           = stat[1].max;
45                 __entry->wnr_samples    = stat[1].nr_samples;
46         ),
47
48         TP_printk("%s: rmean=%llu, rmin=%llu, rmax=%llu, rsamples=%llu, "
49                   "wmean=%llu, wmin=%llu, wmax=%llu, wsamples=%llu\n",
50                   __entry->name, __entry->rmean, __entry->rmin, __entry->rmax,
51                   __entry->rnr_samples, __entry->wmean, __entry->wmin,
52                   __entry->wmax, __entry->wnr_samples)
53 );
54
55 /**
56  * wbt_lat - trace latency event
57  * @lat: latency trigger
58  */
59 TRACE_EVENT(wbt_lat,
60
61         TP_PROTO(struct backing_dev_info *bdi, unsigned long lat),
62
63         TP_ARGS(bdi, lat),
64
65         TP_STRUCT__entry(
66                 __array(char, name, 32)
67                 __field(unsigned long, lat)
68         ),
69
70         TP_fast_assign(
71                 strlcpy(__entry->name, dev_name(bdi->dev),
72                         ARRAY_SIZE(__entry->name));
73                 __entry->lat = div_u64(lat, 1000);
74         ),
75
76         TP_printk("%s: latency %lluus\n", __entry->name,
77                         (unsigned long long) __entry->lat)
78 );
79
80 /**
81  * wbt_step - trace wb event step
82  * @msg: context message
83  * @step: the current scale step count
84  * @window: the current monitoring window
85  * @bg: the current background queue limit
86  * @normal: the current normal writeback limit
87  * @max: the current max throughput writeback limit
88  */
89 TRACE_EVENT(wbt_step,
90
91         TP_PROTO(struct backing_dev_info *bdi, const char *msg,
92                  int step, unsigned long window, unsigned int bg,
93                  unsigned int normal, unsigned int max),
94
95         TP_ARGS(bdi, msg, step, window, bg, normal, max),
96
97         TP_STRUCT__entry(
98                 __array(char, name, 32)
99                 __field(const char *, msg)
100                 __field(int, step)
101                 __field(unsigned long, window)
102                 __field(unsigned int, bg)
103                 __field(unsigned int, normal)
104                 __field(unsigned int, max)
105         ),
106
107         TP_fast_assign(
108                 strlcpy(__entry->name, dev_name(bdi->dev),
109                         ARRAY_SIZE(__entry->name));
110                 __entry->msg    = msg;
111                 __entry->step   = step;
112                 __entry->window = div_u64(window, 1000);
113                 __entry->bg     = bg;
114                 __entry->normal = normal;
115                 __entry->max    = max;
116         ),
117
118         TP_printk("%s: %s: step=%d, window=%luus, background=%u, normal=%u, max=%u\n",
119                   __entry->name, __entry->msg, __entry->step, __entry->window,
120                   __entry->bg, __entry->normal, __entry->max)
121 );
122
123 /**
124  * wbt_timer - trace wb timer event
125  * @status: timer state status
126  * @step: the current scale step count
127  * @inflight: tracked writes inflight
128  */
129 TRACE_EVENT(wbt_timer,
130
131         TP_PROTO(struct backing_dev_info *bdi, unsigned int status,
132                  int step, unsigned int inflight),
133
134         TP_ARGS(bdi, status, step, inflight),
135
136         TP_STRUCT__entry(
137                 __array(char, name, 32)
138                 __field(unsigned int, status)
139                 __field(int, step)
140                 __field(unsigned int, inflight)
141         ),
142
143         TP_fast_assign(
144                 strlcpy(__entry->name, dev_name(bdi->dev),
145                         ARRAY_SIZE(__entry->name));
146                 __entry->status         = status;
147                 __entry->step           = step;
148                 __entry->inflight       = inflight;
149         ),
150
151         TP_printk("%s: status=%u, step=%d, inflight=%u\n", __entry->name,
152                   __entry->status, __entry->step, __entry->inflight)
153 );
154
155 #endif /* _TRACE_WBT_H */
156
157 /* This part must be outside protection */
158 #include <trace/define_trace.h>