1
2
3
4
5
6
7 #undef TRACE_SYSTEM
8 #define TRACE_SYSTEM cachefiles
9
10 #if !defined(_TRACE_CACHEFILES_H) || defined(TRACE_HEADER_MULTI_READ)
11 #define _TRACE_CACHEFILES_H
12
13 #include <linux/tracepoint.h>
14
15
16
17
18 #ifndef __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY
19 #define __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY
20
21 enum cachefiles_obj_ref_trace {
22 cachefiles_obj_put_wait_retry = fscache_obj_ref__nr_traces,
23 cachefiles_obj_put_wait_timeo,
24 cachefiles_obj_ref__nr_traces
25 };
26
27 #endif
28
29
30
31
32 #define cachefiles_obj_kill_traces \
33 EM(FSCACHE_OBJECT_IS_STALE, "stale") \
34 EM(FSCACHE_OBJECT_NO_SPACE, "no_space") \
35 EM(FSCACHE_OBJECT_WAS_RETIRED, "was_retired") \
36 E_(FSCACHE_OBJECT_WAS_CULLED, "was_culled")
37
38 #define cachefiles_obj_ref_traces \
39 EM(fscache_obj_get_add_to_deps, "GET add_to_deps") \
40 EM(fscache_obj_get_queue, "GET queue") \
41 EM(fscache_obj_put_alloc_fail, "PUT alloc_fail") \
42 EM(fscache_obj_put_attach_fail, "PUT attach_fail") \
43 EM(fscache_obj_put_drop_obj, "PUT drop_obj") \
44 EM(fscache_obj_put_enq_dep, "PUT enq_dep") \
45 EM(fscache_obj_put_queue, "PUT queue") \
46 EM(fscache_obj_put_work, "PUT work") \
47 EM(cachefiles_obj_put_wait_retry, "PUT wait_retry") \
48 E_(cachefiles_obj_put_wait_timeo, "PUT wait_timeo")
49
50
51
52
53 #undef EM
54 #undef E_
55 #define EM(a, b) TRACE_DEFINE_ENUM(a);
56 #define E_(a, b) TRACE_DEFINE_ENUM(a);
57
58 cachefiles_obj_kill_traces;
59 cachefiles_obj_ref_traces;
60
61
62
63
64
65 #undef EM
66 #undef E_
67 #define EM(a, b) { a, b },
68 #define E_(a, b) { a, b }
69
70
71 TRACE_EVENT(cachefiles_ref,
72 TP_PROTO(struct cachefiles_object *obj,
73 struct fscache_cookie *cookie,
74 enum cachefiles_obj_ref_trace why,
75 int usage),
76
77 TP_ARGS(obj, cookie, why, usage),
78
79
80 TP_STRUCT__entry(
81 __field(struct cachefiles_object *, obj )
82 __field(struct fscache_cookie *, cookie )
83 __field(enum cachefiles_obj_ref_trace, why )
84 __field(int, usage )
85 ),
86
87 TP_fast_assign(
88 __entry->obj = obj;
89 __entry->cookie = cookie;
90 __entry->usage = usage;
91 __entry->why = why;
92 ),
93
94 TP_printk("c=%p o=%p u=%d %s",
95 __entry->cookie, __entry->obj, __entry->usage,
96 __print_symbolic(__entry->why, cachefiles_obj_ref_traces))
97 );
98
99 TRACE_EVENT(cachefiles_lookup,
100 TP_PROTO(struct cachefiles_object *obj,
101 struct dentry *de,
102 struct inode *inode),
103
104 TP_ARGS(obj, de, inode),
105
106 TP_STRUCT__entry(
107 __field(struct cachefiles_object *, obj )
108 __field(struct dentry *, de )
109 __field(struct inode *, inode )
110 ),
111
112 TP_fast_assign(
113 __entry->obj = obj;
114 __entry->de = de;
115 __entry->inode = inode;
116 ),
117
118 TP_printk("o=%p d=%p i=%p",
119 __entry->obj, __entry->de, __entry->inode)
120 );
121
122 TRACE_EVENT(cachefiles_mkdir,
123 TP_PROTO(struct cachefiles_object *obj,
124 struct dentry *de, int ret),
125
126 TP_ARGS(obj, de, ret),
127
128 TP_STRUCT__entry(
129 __field(struct cachefiles_object *, obj )
130 __field(struct dentry *, de )
131 __field(int, ret )
132 ),
133
134 TP_fast_assign(
135 __entry->obj = obj;
136 __entry->de = de;
137 __entry->ret = ret;
138 ),
139
140 TP_printk("o=%p d=%p r=%u",
141 __entry->obj, __entry->de, __entry->ret)
142 );
143
144 TRACE_EVENT(cachefiles_create,
145 TP_PROTO(struct cachefiles_object *obj,
146 struct dentry *de, int ret),
147
148 TP_ARGS(obj, de, ret),
149
150 TP_STRUCT__entry(
151 __field(struct cachefiles_object *, obj )
152 __field(struct dentry *, de )
153 __field(int, ret )
154 ),
155
156 TP_fast_assign(
157 __entry->obj = obj;
158 __entry->de = de;
159 __entry->ret = ret;
160 ),
161
162 TP_printk("o=%p d=%p r=%u",
163 __entry->obj, __entry->de, __entry->ret)
164 );
165
166 TRACE_EVENT(cachefiles_unlink,
167 TP_PROTO(struct cachefiles_object *obj,
168 struct dentry *de,
169 enum fscache_why_object_killed why),
170
171 TP_ARGS(obj, de, why),
172
173
174 TP_STRUCT__entry(
175 __field(struct cachefiles_object *, obj )
176 __field(struct dentry *, de )
177 __field(enum fscache_why_object_killed, why )
178 ),
179
180 TP_fast_assign(
181 __entry->obj = obj;
182 __entry->de = de;
183 __entry->why = why;
184 ),
185
186 TP_printk("o=%p d=%p w=%s",
187 __entry->obj, __entry->de,
188 __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
189 );
190
191 TRACE_EVENT(cachefiles_rename,
192 TP_PROTO(struct cachefiles_object *obj,
193 struct dentry *de,
194 struct dentry *to,
195 enum fscache_why_object_killed why),
196
197 TP_ARGS(obj, de, to, why),
198
199
200 TP_STRUCT__entry(
201 __field(struct cachefiles_object *, obj )
202 __field(struct dentry *, de )
203 __field(struct dentry *, to )
204 __field(enum fscache_why_object_killed, why )
205 ),
206
207 TP_fast_assign(
208 __entry->obj = obj;
209 __entry->de = de;
210 __entry->to = to;
211 __entry->why = why;
212 ),
213
214 TP_printk("o=%p d=%p t=%p w=%s",
215 __entry->obj, __entry->de, __entry->to,
216 __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
217 );
218
219 TRACE_EVENT(cachefiles_mark_active,
220 TP_PROTO(struct cachefiles_object *obj,
221 struct dentry *de),
222
223 TP_ARGS(obj, de),
224
225
226 TP_STRUCT__entry(
227 __field(struct cachefiles_object *, obj )
228 __field(struct dentry *, de )
229 ),
230
231 TP_fast_assign(
232 __entry->obj = obj;
233 __entry->de = de;
234 ),
235
236 TP_printk("o=%p d=%p",
237 __entry->obj, __entry->de)
238 );
239
240 TRACE_EVENT(cachefiles_wait_active,
241 TP_PROTO(struct cachefiles_object *obj,
242 struct dentry *de,
243 struct cachefiles_object *xobj),
244
245 TP_ARGS(obj, de, xobj),
246
247
248 TP_STRUCT__entry(
249 __field(struct cachefiles_object *, obj )
250 __field(struct dentry *, de )
251 __field(struct cachefiles_object *, xobj )
252 __field(u16, flags )
253 __field(u16, fsc_flags )
254 ),
255
256 TP_fast_assign(
257 __entry->obj = obj;
258 __entry->de = de;
259 __entry->xobj = xobj;
260 __entry->flags = xobj->flags;
261 __entry->fsc_flags = xobj->fscache.flags;
262 ),
263
264 TP_printk("o=%p d=%p wo=%p wf=%x wff=%x",
265 __entry->obj, __entry->de, __entry->xobj,
266 __entry->flags, __entry->fsc_flags)
267 );
268
269 TRACE_EVENT(cachefiles_mark_inactive,
270 TP_PROTO(struct cachefiles_object *obj,
271 struct dentry *de,
272 struct inode *inode),
273
274 TP_ARGS(obj, de, inode),
275
276
277 TP_STRUCT__entry(
278 __field(struct cachefiles_object *, obj )
279 __field(struct dentry *, de )
280 __field(struct inode *, inode )
281 ),
282
283 TP_fast_assign(
284 __entry->obj = obj;
285 __entry->de = de;
286 __entry->inode = inode;
287 ),
288
289 TP_printk("o=%p d=%p i=%p",
290 __entry->obj, __entry->de, __entry->inode)
291 );
292
293 TRACE_EVENT(cachefiles_mark_buried,
294 TP_PROTO(struct cachefiles_object *obj,
295 struct dentry *de,
296 enum fscache_why_object_killed why),
297
298 TP_ARGS(obj, de, why),
299
300
301 TP_STRUCT__entry(
302 __field(struct cachefiles_object *, obj )
303 __field(struct dentry *, de )
304 __field(enum fscache_why_object_killed, why )
305 ),
306
307 TP_fast_assign(
308 __entry->obj = obj;
309 __entry->de = de;
310 __entry->why = why;
311 ),
312
313 TP_printk("o=%p d=%p w=%s",
314 __entry->obj, __entry->de,
315 __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
316 );
317
318 #endif
319
320
321 #include <trace/define_trace.h>