xref: /openbmc/linux/fs/ocfs2/ocfs2_trace.h (revision 32a42d39)
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM ocfs2
3 
4 #if !defined(_TRACE_OCFS2_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_OCFS2_H
6 
7 #include <linux/tracepoint.h>
8 
9 DECLARE_EVENT_CLASS(ocfs2__int,
10 	TP_PROTO(int num),
11 	TP_ARGS(num),
12 	TP_STRUCT__entry(
13 		__field(int, num)
14 	),
15 	TP_fast_assign(
16 		__entry->num = num;
17 	),
18 	TP_printk("%d", __entry->num)
19 );
20 
21 #define DEFINE_OCFS2_INT_EVENT(name)	\
22 DEFINE_EVENT(ocfs2__int, name,	\
23 	TP_PROTO(int num),	\
24 	TP_ARGS(num))
25 
26 DECLARE_EVENT_CLASS(ocfs2__uint,
27 	TP_PROTO(unsigned int num),
28 	TP_ARGS(num),
29 	TP_STRUCT__entry(
30 		__field(	unsigned int,	num		)
31 	),
32 	TP_fast_assign(
33 		__entry->num	= 	num;
34 	),
35 	TP_printk("%u", __entry->num)
36 );
37 
38 #define DEFINE_OCFS2_UINT_EVENT(name)	\
39 DEFINE_EVENT(ocfs2__uint, name,	\
40 	TP_PROTO(unsigned int num),	\
41 	TP_ARGS(num))
42 
43 DECLARE_EVENT_CLASS(ocfs2__ull,
44 	TP_PROTO(unsigned long long blkno),
45 	TP_ARGS(blkno),
46 	TP_STRUCT__entry(
47 		__field(unsigned long long, blkno)
48 	),
49 	TP_fast_assign(
50 		__entry->blkno = blkno;
51 	),
52 	TP_printk("%llu", __entry->blkno)
53 );
54 
55 #define DEFINE_OCFS2_ULL_EVENT(name)	\
56 DEFINE_EVENT(ocfs2__ull, name,	\
57 	TP_PROTO(unsigned long long num),	\
58 	TP_ARGS(num))
59 
60 DECLARE_EVENT_CLASS(ocfs2__pointer,
61 	TP_PROTO(void *pointer),
62 	TP_ARGS(pointer),
63 	TP_STRUCT__entry(
64 		__field(void *, pointer)
65 	),
66 	TP_fast_assign(
67 		__entry->pointer = pointer;
68 	),
69 	TP_printk("%p", __entry->pointer)
70 );
71 
72 #define DEFINE_OCFS2_POINTER_EVENT(name)	\
73 DEFINE_EVENT(ocfs2__pointer, name,	\
74 	TP_PROTO(void *pointer),	\
75 	TP_ARGS(pointer))
76 
77 DECLARE_EVENT_CLASS(ocfs2__int_int,
78 	TP_PROTO(int value1, int value2),
79 	TP_ARGS(value1, value2),
80 	TP_STRUCT__entry(
81 		__field(int, value1)
82 		__field(int, value2)
83 	),
84 	TP_fast_assign(
85 		__entry->value1	= value1;
86 		__entry->value2	= value2;
87 	),
88 	TP_printk("%d %d", __entry->value1, __entry->value2)
89 );
90 
91 #define DEFINE_OCFS2_INT_INT_EVENT(name)	\
92 DEFINE_EVENT(ocfs2__int_int, name,	\
93 	TP_PROTO(int val1, int val2),	\
94 	TP_ARGS(val1, val2))
95 
96 DECLARE_EVENT_CLASS(ocfs2__uint_uint,
97 	TP_PROTO(unsigned int value1, unsigned int value2),
98 	TP_ARGS(value1, value2),
99 	TP_STRUCT__entry(
100 		__field(unsigned int, value1)
101 		__field(unsigned int, value2)
102 	),
103 	TP_fast_assign(
104 		__entry->value1 = value1;
105 		__entry->value2 = value2;
106 	),
107 	TP_printk("%u %u", __entry->value1, __entry->value2)
108 );
109 
110 #define DEFINE_OCFS2_UINT_UINT_EVENT(name)	\
111 DEFINE_EVENT(ocfs2__uint_uint, name,	\
112 	TP_PROTO(unsigned int val1, unsigned int val2),	\
113 	TP_ARGS(val1, val2))
114 
115 DECLARE_EVENT_CLASS(ocfs2__ull_uint,
116 	TP_PROTO(unsigned long long value1, unsigned int value2),
117 	TP_ARGS(value1, value2),
118 	TP_STRUCT__entry(
119 		__field(unsigned long long, value1)
120 		__field(unsigned int, value2)
121 	),
122 	TP_fast_assign(
123 		__entry->value1 = value1;
124 		__entry->value2 = value2;
125 	),
126 	TP_printk("%llu %u", __entry->value1, __entry->value2)
127 );
128 
129 #define DEFINE_OCFS2_ULL_UINT_EVENT(name)	\
130 DEFINE_EVENT(ocfs2__ull_uint, name,	\
131 	TP_PROTO(unsigned long long val1, unsigned int val2),	\
132 	TP_ARGS(val1, val2))
133 
134 DECLARE_EVENT_CLASS(ocfs2__ull_int,
135 	TP_PROTO(unsigned long long value1, int value2),
136 	TP_ARGS(value1, value2),
137 	TP_STRUCT__entry(
138 		__field(unsigned long long, value1)
139 		__field(int, value2)
140 	),
141 	TP_fast_assign(
142 		__entry->value1	= value1;
143 		__entry->value2	= value2;
144 	),
145 	TP_printk("%llu %d", __entry->value1, __entry->value2)
146 );
147 
148 #define DEFINE_OCFS2_ULL_INT_EVENT(name)	\
149 DEFINE_EVENT(ocfs2__ull_int, name,	\
150 	TP_PROTO(unsigned long long val1, int val2),	\
151 	TP_ARGS(val1, val2))
152 
153 DECLARE_EVENT_CLASS(ocfs2__ull_ull,
154 	TP_PROTO(unsigned long long value1, unsigned long long value2),
155 	TP_ARGS(value1, value2),
156 	TP_STRUCT__entry(
157 		__field(unsigned long long, value1)
158 		__field(unsigned long long, value2)
159 	),
160 	TP_fast_assign(
161 		__entry->value1 = value1;
162 		__entry->value2 = value2;
163 	),
164 	TP_printk("%llu %llu", __entry->value1, __entry->value2)
165 );
166 
167 #define DEFINE_OCFS2_ULL_ULL_EVENT(name)	\
168 DEFINE_EVENT(ocfs2__ull_ull, name,	\
169 	TP_PROTO(unsigned long long val1, unsigned long long val2),	\
170 	TP_ARGS(val1, val2))
171 
172 DECLARE_EVENT_CLASS(ocfs2__ull_ull_uint,
173 	TP_PROTO(unsigned long long value1,
174 		 unsigned long long value2, unsigned int value3),
175 	TP_ARGS(value1, value2, value3),
176 	TP_STRUCT__entry(
177 		__field(unsigned long long, value1)
178 		__field(unsigned long long, value2)
179 		__field(unsigned int, value3)
180 	),
181 	TP_fast_assign(
182 		__entry->value1 = value1;
183 		__entry->value2 = value2;
184 		__entry->value3 = value3;
185 	),
186 	TP_printk("%llu %llu %u",
187 		  __entry->value1, __entry->value2, __entry->value3)
188 );
189 
190 #define DEFINE_OCFS2_ULL_ULL_UINT_EVENT(name)	\
191 DEFINE_EVENT(ocfs2__ull_ull_uint, name,	\
192 	TP_PROTO(unsigned long long val1,	\
193 		 unsigned long long val2, unsigned int val3),	\
194 	TP_ARGS(val1, val2, val3))
195 
196 DECLARE_EVENT_CLASS(ocfs2__ull_uint_uint,
197 	TP_PROTO(unsigned long long value1,
198 		 unsigned int value2, unsigned int value3),
199 	TP_ARGS(value1, value2, value3),
200 	TP_STRUCT__entry(
201 		__field(unsigned long long, value1)
202 		__field(unsigned int, value2)
203 		__field(unsigned int, value3)
204 	),
205 	TP_fast_assign(
206 		__entry->value1 = value1;
207 		__entry->value2 = value2;
208 		__entry->value3	= value3;
209 	),
210 	TP_printk("%llu %u %u", __entry->value1,
211 		  __entry->value2, __entry->value3)
212 );
213 
214 #define DEFINE_OCFS2_ULL_UINT_UINT_EVENT(name)	\
215 DEFINE_EVENT(ocfs2__ull_uint_uint, name,	\
216 	TP_PROTO(unsigned long long val1,	\
217 		 unsigned int val2, unsigned int val3),	\
218 	TP_ARGS(val1, val2, val3))
219 
220 DECLARE_EVENT_CLASS(ocfs2__uint_uint_uint,
221 	TP_PROTO(unsigned int value1, unsigned int value2,
222 		 unsigned int value3),
223 	TP_ARGS(value1, value2, value3),
224 	TP_STRUCT__entry(
225 		__field(	unsigned int,	value1		)
226 		__field(	unsigned int,	value2		)
227 		__field(	unsigned int,	value3		)
228 	),
229 	TP_fast_assign(
230 		__entry->value1	= 	value1;
231 		__entry->value2	= 	value2;
232 		__entry->value3	= 	value3;
233 	),
234 	TP_printk("%u %u %u", __entry->value1, __entry->value2, __entry->value3)
235 );
236 
237 #define DEFINE_OCFS2_UINT_UINT_UINT_EVENT(name)	\
238 DEFINE_EVENT(ocfs2__uint_uint_uint, name,	\
239 	TP_PROTO(unsigned int value1, unsigned int value2,	\
240 		 unsigned int value3),	\
241 	TP_ARGS(value1, value2, value3))
242 
243 DECLARE_EVENT_CLASS(ocfs2__ull_ull_ull,
244 	TP_PROTO(unsigned long long value1,
245 		 unsigned long long value2, unsigned long long value3),
246 	TP_ARGS(value1, value2, value3),
247 	TP_STRUCT__entry(
248 		__field(unsigned long long, value1)
249 		__field(unsigned long long, value2)
250 		__field(unsigned long long, value3)
251 	),
252 	TP_fast_assign(
253 		__entry->value1 = value1;
254 		__entry->value2 = value2;
255 		__entry->value3 = value3;
256 	),
257 	TP_printk("%llu %llu %llu",
258 		  __entry->value1, __entry->value2, __entry->value3)
259 );
260 
261 #define DEFINE_OCFS2_ULL_ULL_ULL_EVENT(name)	\
262 DEFINE_EVENT(ocfs2__ull_ull_ull, name,	\
263 	TP_PROTO(unsigned long long value1, unsigned long long value2,	\
264 		 unsigned long long value3),	\
265 	TP_ARGS(value1, value2, value3))
266 
267 DECLARE_EVENT_CLASS(ocfs2__ull_int_int_int,
268 	TP_PROTO(unsigned long long ull, int value1, int value2, int value3),
269 	TP_ARGS(ull, value1, value2, value3),
270 	TP_STRUCT__entry(
271 		__field(	unsigned long long,	ull	)
272 		__field(	int,	value1			)
273 		__field(	int,	value2			)
274 		__field(	int,	value3			)
275 	),
276 	TP_fast_assign(
277 		__entry->ull		= ull;
278 		__entry->value1		= value1;
279 		__entry->value2		= value2;
280 		__entry->value3		= value3;
281 	),
282 	TP_printk("%llu %d %d %d",
283 		  __entry->ull, __entry->value1,
284 		  __entry->value2, __entry->value3)
285 );
286 
287 #define DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(name)	\
288 DEFINE_EVENT(ocfs2__ull_int_int_int, name,	\
289 	TP_PROTO(unsigned long long ull, int value1,	\
290 		 int value2, int value3),	\
291 	TP_ARGS(ull, value1, value2, value3))
292 
293 DECLARE_EVENT_CLASS(ocfs2__ull_uint_uint_uint,
294 	TP_PROTO(unsigned long long ull, unsigned int value1,
295 		 unsigned int value2, unsigned int value3),
296 	TP_ARGS(ull, value1, value2, value3),
297 	TP_STRUCT__entry(
298 		__field(unsigned long long, ull)
299 		__field(unsigned int, value1)
300 		__field(unsigned int, value2)
301 		__field(unsigned int, value3)
302 	),
303 	TP_fast_assign(
304 		__entry->ull = ull;
305 		__entry->value1 = value1;
306 		__entry->value2	= value2;
307 		__entry->value3	= value3;
308 	),
309 	TP_printk("%llu %u %u %u",
310 		  __entry->ull, __entry->value1,
311 		  __entry->value2, __entry->value3)
312 );
313 
314 #define DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(name)	\
315 DEFINE_EVENT(ocfs2__ull_uint_uint_uint, name,	\
316 	TP_PROTO(unsigned long long ull, unsigned int value1,	\
317 		 unsigned int value2, unsigned int value3),	\
318 	TP_ARGS(ull, value1, value2, value3))
319 
320 /* Trace events for fs/ocfs2/alloc.c. */
321 DECLARE_EVENT_CLASS(ocfs2__btree_ops,
322 	TP_PROTO(unsigned long long owner,\
323 		 unsigned int value1, unsigned int value2),
324 	TP_ARGS(owner, value1, value2),
325 	TP_STRUCT__entry(
326 		__field(unsigned long long, owner)
327 		__field(unsigned int, value1)
328 		__field(unsigned int, value2)
329 	),
330 	TP_fast_assign(
331 		__entry->owner = owner;
332 		__entry->value1 = value1;
333 		__entry->value2	= value2;
334 	),
335 	TP_printk("%llu %u %u",
336 		  __entry->owner, __entry->value1, __entry->value2)
337 );
338 
339 #define DEFINE_OCFS2_BTREE_EVENT(name)	\
340 DEFINE_EVENT(ocfs2__btree_ops, name,	\
341 	TP_PROTO(unsigned long long owner,	\
342 		 unsigned int value1, unsigned int value2),	\
343 	TP_ARGS(owner, value1, value2))
344 
345 DEFINE_OCFS2_BTREE_EVENT(ocfs2_adjust_rightmost_branch);
346 
347 DEFINE_OCFS2_BTREE_EVENT(ocfs2_rotate_tree_right);
348 
349 DEFINE_OCFS2_BTREE_EVENT(ocfs2_append_rec_to_path);
350 
351 DEFINE_OCFS2_BTREE_EVENT(ocfs2_insert_extent_start);
352 
353 DEFINE_OCFS2_BTREE_EVENT(ocfs2_add_clusters_in_btree);
354 
355 DEFINE_OCFS2_INT_EVENT(ocfs2_num_free_extents);
356 
357 DEFINE_OCFS2_INT_EVENT(ocfs2_complete_edge_insert);
358 
359 TRACE_EVENT(ocfs2_grow_tree,
360 	TP_PROTO(unsigned long long owner, int depth),
361 	TP_ARGS(owner, depth),
362 	TP_STRUCT__entry(
363 		__field(unsigned long long, owner)
364 		__field(int, depth)
365 	),
366 	TP_fast_assign(
367 		__entry->owner = owner;
368 		__entry->depth = depth;
369 	),
370 	TP_printk("%llu %d", __entry->owner, __entry->depth)
371 );
372 
373 TRACE_EVENT(ocfs2_rotate_subtree,
374 	TP_PROTO(int subtree_root, unsigned long long blkno,
375 		 int depth),
376 	TP_ARGS(subtree_root, blkno, depth),
377 	TP_STRUCT__entry(
378 		__field(int, subtree_root)
379 		__field(unsigned long long, blkno)
380 		__field(int, depth)
381 	),
382 	TP_fast_assign(
383 		__entry->subtree_root = subtree_root;
384 		__entry->blkno = blkno;
385 		__entry->depth = depth;
386 	),
387 	TP_printk("%d %llu %d", __entry->subtree_root,
388 		  __entry->blkno, __entry->depth)
389 );
390 
391 TRACE_EVENT(ocfs2_insert_extent,
392 	TP_PROTO(unsigned int ins_appending, unsigned int ins_contig,
393 		 int ins_contig_index, int free_records, int ins_tree_depth),
394 	TP_ARGS(ins_appending, ins_contig, ins_contig_index, free_records,
395 		ins_tree_depth),
396 	TP_STRUCT__entry(
397 		__field(unsigned int, ins_appending)
398 		__field(unsigned int, ins_contig)
399 		__field(int, ins_contig_index)
400 		__field(int, free_records)
401 		__field(int, ins_tree_depth)
402 	),
403 	TP_fast_assign(
404 		__entry->ins_appending = ins_appending;
405 		__entry->ins_contig = ins_contig;
406 		__entry->ins_contig_index = ins_contig_index;
407 		__entry->free_records = free_records;
408 		__entry->ins_tree_depth = ins_tree_depth;
409 	),
410 	TP_printk("%u %u %d %d %d",
411 		  __entry->ins_appending, __entry->ins_contig,
412 		  __entry->ins_contig_index, __entry->free_records,
413 		  __entry->ins_tree_depth)
414 );
415 
416 TRACE_EVENT(ocfs2_split_extent,
417 	TP_PROTO(int split_index, unsigned int c_contig_type,
418 		 unsigned int c_has_empty_extent,
419 		 unsigned int c_split_covers_rec),
420 	TP_ARGS(split_index, c_contig_type,
421 		c_has_empty_extent, c_split_covers_rec),
422 	TP_STRUCT__entry(
423 		__field(int, split_index)
424 		__field(unsigned int, c_contig_type)
425 		__field(unsigned int, c_has_empty_extent)
426 		__field(unsigned int, c_split_covers_rec)
427 	),
428 	TP_fast_assign(
429 		__entry->split_index = split_index;
430 		__entry->c_contig_type = c_contig_type;
431 		__entry->c_has_empty_extent = c_has_empty_extent;
432 		__entry->c_split_covers_rec = c_split_covers_rec;
433 	),
434 	TP_printk("%d %u %u %u", __entry->split_index, __entry->c_contig_type,
435 		  __entry->c_has_empty_extent, __entry->c_split_covers_rec)
436 );
437 
438 TRACE_EVENT(ocfs2_remove_extent,
439 	TP_PROTO(unsigned long long owner, unsigned int cpos,
440 		 unsigned int len, int index,
441 		 unsigned int e_cpos, unsigned int clusters),
442 	TP_ARGS(owner, cpos, len, index, e_cpos, clusters),
443 	TP_STRUCT__entry(
444 		__field(unsigned long long, owner)
445 		__field(unsigned int, cpos)
446 		__field(unsigned int, len)
447 		__field(int, index)
448 		__field(unsigned int, e_cpos)
449 		__field(unsigned int, clusters)
450 	),
451 	TP_fast_assign(
452 		__entry->owner = owner;
453 		__entry->cpos = cpos;
454 		__entry->len = len;
455 		__entry->index = index;
456 		__entry->e_cpos = e_cpos;
457 		__entry->clusters = clusters;
458 	),
459 	TP_printk("%llu %u %u %d %u %u",
460 		  __entry->owner, __entry->cpos, __entry->len, __entry->index,
461 		  __entry->e_cpos, __entry->clusters)
462 );
463 
464 TRACE_EVENT(ocfs2_commit_truncate,
465 	TP_PROTO(unsigned long long ino, unsigned int new_cpos,
466 		 unsigned int clusters, unsigned int depth),
467 	TP_ARGS(ino, new_cpos, clusters, depth),
468 	TP_STRUCT__entry(
469 		__field(unsigned long long, ino)
470 		__field(unsigned int, new_cpos)
471 		__field(unsigned int, clusters)
472 		__field(unsigned int, depth)
473 	),
474 	TP_fast_assign(
475 		__entry->ino = ino;
476 		__entry->new_cpos = new_cpos;
477 		__entry->clusters = clusters;
478 		__entry->depth = depth;
479 	),
480 	TP_printk("%llu %u %u %u",
481 		  __entry->ino, __entry->new_cpos,
482 		  __entry->clusters, __entry->depth)
483 );
484 
485 TRACE_EVENT(ocfs2_validate_extent_block,
486 	TP_PROTO(unsigned long long blkno),
487 	TP_ARGS(blkno),
488 	TP_STRUCT__entry(
489 		__field(unsigned long long, blkno)
490 	),
491 	TP_fast_assign(
492 		__entry->blkno = blkno;
493 	),
494 	TP_printk("%llu ", __entry->blkno)
495 );
496 
497 TRACE_EVENT(ocfs2_rotate_leaf,
498 	TP_PROTO(unsigned int insert_cpos, int insert_index,
499 		 int has_empty, int next_free,
500 		 unsigned int l_count),
501 	TP_ARGS(insert_cpos, insert_index, has_empty,
502 		next_free, l_count),
503 	TP_STRUCT__entry(
504 		__field(unsigned int, insert_cpos)
505 		__field(int, insert_index)
506 		__field(int, has_empty)
507 		__field(int, next_free)
508 		__field(unsigned int, l_count)
509 	),
510 	TP_fast_assign(
511 		__entry->insert_cpos = insert_cpos;
512 		__entry->insert_index = insert_index;
513 		__entry->has_empty = has_empty;
514 		__entry->next_free = next_free;
515 		__entry->l_count = l_count;
516 	),
517 	TP_printk("%u %d %d %d %u", __entry->insert_cpos,
518 		  __entry->insert_index, __entry->has_empty,
519 		  __entry->next_free, __entry->l_count)
520 );
521 
522 TRACE_EVENT(ocfs2_add_clusters_in_btree_ret,
523 	TP_PROTO(int status, int reason, int err),
524 	TP_ARGS(status, reason, err),
525 	TP_STRUCT__entry(
526 		__field(int, status)
527 		__field(int, reason)
528 		__field(int, err)
529 	),
530 	TP_fast_assign(
531 		__entry->status = status;
532 		__entry->reason = reason;
533 		__entry->err = err;
534 	),
535 	TP_printk("%d %d %d", __entry->status,
536 		  __entry->reason, __entry->err)
537 );
538 
539 TRACE_EVENT(ocfs2_mark_extent_written,
540 	TP_PROTO(unsigned long long owner, unsigned int cpos,
541 		 unsigned int len, unsigned int phys),
542 	TP_ARGS(owner, cpos, len, phys),
543 	TP_STRUCT__entry(
544 		__field(unsigned long long, owner)
545 		__field(unsigned int, cpos)
546 		__field(unsigned int, len)
547 		__field(unsigned int, phys)
548 	),
549 	TP_fast_assign(
550 		__entry->owner = owner;
551 		__entry->cpos = cpos;
552 		__entry->len = len;
553 		__entry->phys = phys;
554 	),
555 	TP_printk("%llu %u %u %u",
556 		  __entry->owner, __entry->cpos,
557 		  __entry->len, __entry->phys)
558 );
559 
560 DECLARE_EVENT_CLASS(ocfs2__truncate_log_ops,
561 	TP_PROTO(unsigned long long blkno, int index,
562 		 unsigned int start, unsigned int num),
563 	TP_ARGS(blkno, index, start, num),
564 	TP_STRUCT__entry(
565 		__field(unsigned long long, blkno)
566 		__field(int, index)
567 		__field(unsigned int, start)
568 		__field(unsigned int, num)
569 	),
570 	TP_fast_assign(
571 		__entry->blkno = blkno;
572 		__entry->index = index;
573 		__entry->start = start;
574 		__entry->num = num;
575 	),
576 	TP_printk("%llu %d %u %u",
577 		  __entry->blkno, __entry->index,
578 		  __entry->start, __entry->num)
579 );
580 
581 #define DEFINE_OCFS2_TRUNCATE_LOG_OPS_EVENT(name)	\
582 DEFINE_EVENT(ocfs2__truncate_log_ops, name,	\
583 	TP_PROTO(unsigned long long blkno, int index,	\
584 		 unsigned int start, unsigned int num),	\
585 	TP_ARGS(blkno, index, start, num))
586 
587 DEFINE_OCFS2_TRUNCATE_LOG_OPS_EVENT(ocfs2_truncate_log_append);
588 
589 DEFINE_OCFS2_TRUNCATE_LOG_OPS_EVENT(ocfs2_replay_truncate_records);
590 
591 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_flush_truncate_log);
592 
593 DEFINE_OCFS2_INT_EVENT(ocfs2_begin_truncate_log_recovery);
594 
595 DEFINE_OCFS2_INT_EVENT(ocfs2_truncate_log_recovery_num);
596 
597 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_complete_truncate_log_recovery);
598 
599 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_free_cached_blocks);
600 
601 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_cache_cluster_dealloc);
602 
603 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_run_deallocs);
604 
605 TRACE_EVENT(ocfs2_cache_block_dealloc,
606 	TP_PROTO(int type, int slot, unsigned long long suballoc,
607 		 unsigned long long blkno, unsigned int bit),
608 	TP_ARGS(type, slot, suballoc, blkno, bit),
609 	TP_STRUCT__entry(
610 		__field(int, type)
611 		__field(int, slot)
612 		__field(unsigned long long, suballoc)
613 		__field(unsigned long long, blkno)
614 		__field(unsigned int, bit)
615 	),
616 	TP_fast_assign(
617 		__entry->type = type;
618 		__entry->slot = slot;
619 		__entry->suballoc = suballoc;
620 		__entry->blkno = blkno;
621 		__entry->bit = bit;
622 	),
623 	TP_printk("%d %d %llu %llu %u",
624 		  __entry->type, __entry->slot, __entry->suballoc,
625 		  __entry->blkno, __entry->bit)
626 );
627 
628 /* End of trace events for fs/ocfs2/alloc.c. */
629 
630 /* Trace events for fs/ocfs2/localalloc.c. */
631 
632 DEFINE_OCFS2_UINT_UINT_UINT_EVENT(ocfs2_la_set_sizes);
633 
634 DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_alloc_should_use_local);
635 
636 DEFINE_OCFS2_INT_EVENT(ocfs2_load_local_alloc);
637 
638 DEFINE_OCFS2_INT_EVENT(ocfs2_begin_local_alloc_recovery);
639 
640 DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_reserve_local_alloc_bits);
641 
642 DEFINE_OCFS2_UINT_EVENT(ocfs2_local_alloc_count_bits);
643 
644 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_local_alloc_find_clear_bits_search_bitmap);
645 
646 DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_local_alloc_find_clear_bits);
647 
648 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_sync_local_to_main);
649 
650 TRACE_EVENT(ocfs2_sync_local_to_main_free,
651 	TP_PROTO(int count, int bit, unsigned long long start_blk,
652 		 unsigned long long blkno),
653 	TP_ARGS(count, bit, start_blk, blkno),
654 	TP_STRUCT__entry(
655 		__field(int, count)
656 		__field(int, bit)
657 		__field(unsigned long long, start_blk)
658 		__field(unsigned long long, blkno)
659 	),
660 	TP_fast_assign(
661 		__entry->count = count;
662 		__entry->bit = bit;
663 		__entry->start_blk = start_blk;
664 		__entry->blkno = blkno;
665 	),
666 	TP_printk("%d %d %llu %llu",
667 		  __entry->count, __entry->bit, __entry->start_blk,
668 		  __entry->blkno)
669 );
670 
671 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_local_alloc_new_window);
672 
673 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_local_alloc_new_window_result);
674 
675 /* End of trace events for fs/ocfs2/localalloc.c. */
676 
677 /* Trace events for fs/ocfs2/resize.c. */
678 
679 DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_update_last_group_and_inode);
680 
681 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_group_extend);
682 
683 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_group_add);
684 
685 /* End of trace events for fs/ocfs2/resize.c. */
686 
687 /* Trace events for fs/ocfs2/suballoc.c. */
688 
689 DEFINE_OCFS2_ULL_EVENT(ocfs2_validate_group_descriptor);
690 
691 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_block_group_alloc_contig);
692 
693 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_block_group_alloc_discontig);
694 
695 DEFINE_OCFS2_ULL_EVENT(ocfs2_block_group_alloc);
696 
697 DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_reserve_suballoc_bits_nospc);
698 
699 DEFINE_OCFS2_UINT_UINT_UINT_EVENT(ocfs2_reserve_suballoc_bits_no_new_group);
700 
701 DEFINE_OCFS2_ULL_EVENT(ocfs2_reserve_new_inode_new_group);
702 
703 DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_block_group_set_bits);
704 
705 TRACE_EVENT(ocfs2_relink_block_group,
706 	TP_PROTO(unsigned long long i_blkno, unsigned int chain,
707 		 unsigned long long bg_blkno,
708 		 unsigned long long prev_blkno),
709 	TP_ARGS(i_blkno, chain, bg_blkno, prev_blkno),
710 	TP_STRUCT__entry(
711 		__field(unsigned long long, i_blkno)
712 		__field(unsigned int, chain)
713 		__field(unsigned long long, bg_blkno)
714 		__field(unsigned long long, prev_blkno)
715 	),
716 	TP_fast_assign(
717 		__entry->i_blkno = i_blkno;
718 		__entry->chain = chain;
719 		__entry->bg_blkno = bg_blkno;
720 		__entry->prev_blkno = prev_blkno;
721 	),
722 	TP_printk("%llu %u %llu %llu",
723 		  __entry->i_blkno, __entry->chain, __entry->bg_blkno,
724 		  __entry->prev_blkno)
725 );
726 
727 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_cluster_group_search_wrong_max_bits);
728 
729 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_cluster_group_search_max_block);
730 
731 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_block_group_search_max_block);
732 
733 DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_search_chain_begin);
734 
735 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_search_chain_succ);
736 
737 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_search_chain_end);
738 
739 DEFINE_OCFS2_UINT_EVENT(ocfs2_claim_suballoc_bits);
740 
741 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_claim_new_inode_at_loc);
742 
743 DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_block_group_clear_bits);
744 
745 TRACE_EVENT(ocfs2_free_suballoc_bits,
746 	TP_PROTO(unsigned long long inode, unsigned long long group,
747 		 unsigned int start_bit, unsigned int count),
748 	TP_ARGS(inode, group, start_bit, count),
749 	TP_STRUCT__entry(
750 		__field(unsigned long long, inode)
751 		__field(unsigned long long, group)
752 		__field(unsigned int, start_bit)
753 		__field(unsigned int, count)
754 	),
755 	TP_fast_assign(
756 		__entry->inode = inode;
757 		__entry->group = group;
758 		__entry->start_bit = start_bit;
759 		__entry->count = count;
760 	),
761 	TP_printk("%llu %llu %u %u", __entry->inode, __entry->group,
762 		  __entry->start_bit, __entry->count)
763 );
764 
765 TRACE_EVENT(ocfs2_free_clusters,
766 	TP_PROTO(unsigned long long bg_blkno, unsigned long long start_blk,
767 		 unsigned int start_bit, unsigned int count),
768 	TP_ARGS(bg_blkno, start_blk, start_bit, count),
769 	TP_STRUCT__entry(
770 		__field(unsigned long long, bg_blkno)
771 		__field(unsigned long long, start_blk)
772 		__field(unsigned int, start_bit)
773 		__field(unsigned int, count)
774 	),
775 	TP_fast_assign(
776 		__entry->bg_blkno = bg_blkno;
777 		__entry->start_blk = start_blk;
778 		__entry->start_bit = start_bit;
779 		__entry->count = count;
780 	),
781 	TP_printk("%llu %llu %u %u", __entry->bg_blkno, __entry->start_blk,
782 		  __entry->start_bit, __entry->count)
783 );
784 
785 DEFINE_OCFS2_ULL_EVENT(ocfs2_get_suballoc_slot_bit);
786 
787 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_test_suballoc_bit);
788 
789 DEFINE_OCFS2_ULL_EVENT(ocfs2_test_inode_bit);
790 
791 /* End of trace events for fs/ocfs2/suballoc.c. */
792 
793 /* Trace events for fs/ocfs2/refcounttree.c. */
794 
795 DEFINE_OCFS2_ULL_EVENT(ocfs2_validate_refcount_block);
796 
797 DEFINE_OCFS2_ULL_EVENT(ocfs2_purge_refcount_trees);
798 
799 DEFINE_OCFS2_ULL_EVENT(ocfs2_create_refcount_tree);
800 
801 DEFINE_OCFS2_ULL_EVENT(ocfs2_create_refcount_tree_blkno);
802 
803 DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_change_refcount_rec);
804 
805 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_expand_inline_ref_root);
806 
807 DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_divide_leaf_refcount_block);
808 
809 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_new_leaf_refcount_block);
810 
811 DECLARE_EVENT_CLASS(ocfs2__refcount_tree_ops,
812 	TP_PROTO(unsigned long long blkno, int index,
813 		 unsigned long long cpos,
814 		 unsigned int clusters, unsigned int refcount),
815 	TP_ARGS(blkno, index, cpos, clusters, refcount),
816 	TP_STRUCT__entry(
817 		__field(unsigned long long, blkno)
818 		__field(int, index)
819 		__field(unsigned long long, cpos)
820 		__field(unsigned int, clusters)
821 		__field(unsigned int, refcount)
822 	),
823 	TP_fast_assign(
824 		__entry->blkno = blkno;
825 		__entry->index = index;
826 		__entry->cpos = cpos;
827 		__entry->clusters = clusters;
828 		__entry->refcount = refcount;
829 	),
830 	TP_printk("%llu %d %llu %u %u", __entry->blkno, __entry->index,
831 		  __entry->cpos, __entry->clusters, __entry->refcount)
832 );
833 
834 #define DEFINE_OCFS2_REFCOUNT_TREE_OPS_EVENT(name)	\
835 DEFINE_EVENT(ocfs2__refcount_tree_ops, name,		\
836 	TP_PROTO(unsigned long long blkno, int index,	\
837 		 unsigned long long cpos,		\
838 		 unsigned int count, unsigned int refcount),	\
839 	TP_ARGS(blkno, index, cpos, count, refcount))
840 
841 DEFINE_OCFS2_REFCOUNT_TREE_OPS_EVENT(ocfs2_insert_refcount_rec);
842 
843 TRACE_EVENT(ocfs2_split_refcount_rec,
844 	TP_PROTO(unsigned long long cpos,
845 		 unsigned int clusters, unsigned int refcount,
846 		 unsigned long long split_cpos,
847 		 unsigned int split_clusters, unsigned int split_refcount),
848 	TP_ARGS(cpos, clusters, refcount,
849 		split_cpos, split_clusters, split_refcount),
850 	TP_STRUCT__entry(
851 		__field(unsigned long long, cpos)
852 		__field(unsigned int, clusters)
853 		__field(unsigned int, refcount)
854 		__field(unsigned long long, split_cpos)
855 		__field(unsigned int, split_clusters)
856 		__field(unsigned int, split_refcount)
857 	),
858 	TP_fast_assign(
859 		__entry->cpos = cpos;
860 		__entry->clusters = clusters;
861 		__entry->refcount = refcount;
862 		__entry->split_cpos = split_cpos;
863 		__entry->split_clusters = split_clusters;
864 		__entry->split_refcount	= split_refcount;
865 	),
866 	TP_printk("%llu %u %u %llu %u %u",
867 		  __entry->cpos, __entry->clusters, __entry->refcount,
868 		  __entry->split_cpos, __entry->split_clusters,
869 		  __entry->split_refcount)
870 );
871 
872 DEFINE_OCFS2_REFCOUNT_TREE_OPS_EVENT(ocfs2_split_refcount_rec_insert);
873 
874 DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_increase_refcount_begin);
875 
876 DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_increase_refcount_change);
877 
878 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_increase_refcount_insert);
879 
880 DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_increase_refcount_split);
881 
882 DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_remove_refcount_extent);
883 
884 DEFINE_OCFS2_ULL_EVENT(ocfs2_restore_refcount_block);
885 
886 DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_decrease_refcount_rec);
887 
888 TRACE_EVENT(ocfs2_decrease_refcount,
889 	TP_PROTO(unsigned long long owner,
890 		 unsigned long long cpos,
891 		 unsigned int len, int delete),
892 	TP_ARGS(owner, cpos, len, delete),
893 	TP_STRUCT__entry(
894 		__field(unsigned long long, owner)
895 		__field(unsigned long long, cpos)
896 		__field(unsigned int, len)
897 		__field(int, delete)
898 	),
899 	TP_fast_assign(
900 		__entry->owner = owner;
901 		__entry->cpos = cpos;
902 		__entry->len = len;
903 		__entry->delete = delete;
904 	),
905 	TP_printk("%llu %llu %u %d",
906 		  __entry->owner, __entry->cpos, __entry->len, __entry->delete)
907 );
908 
909 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_mark_extent_refcounted);
910 
911 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_calc_refcount_meta_credits);
912 
913 TRACE_EVENT(ocfs2_calc_refcount_meta_credits_iterate,
914 	TP_PROTO(int recs_add, unsigned long long cpos,
915 		 unsigned int clusters, unsigned long long r_cpos,
916 		 unsigned int r_clusters, unsigned int refcount, int index),
917 	TP_ARGS(recs_add, cpos, clusters, r_cpos, r_clusters, refcount, index),
918 	TP_STRUCT__entry(
919 		__field(int, recs_add)
920 		__field(unsigned long long, cpos)
921 		__field(unsigned int, clusters)
922 		__field(unsigned long long, r_cpos)
923 		__field(unsigned int, r_clusters)
924 		__field(unsigned int, refcount)
925 		__field(int, index)
926 	),
927 	TP_fast_assign(
928 		__entry->recs_add = recs_add;
929 		__entry->cpos = cpos;
930 		__entry->clusters = clusters;
931 		__entry->r_cpos = r_cpos;
932 		__entry->r_clusters = r_clusters;
933 		__entry->refcount = refcount;
934 		__entry->index = index;
935 	),
936 	TP_printk("%d %llu %u %llu %u %u %d",
937 		  __entry->recs_add, __entry->cpos, __entry->clusters,
938 		  __entry->r_cpos, __entry->r_clusters,
939 		  __entry->refcount, __entry->index)
940 );
941 
942 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_add_refcount_flag);
943 
944 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_prepare_refcount_change_for_del);
945 
946 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_lock_refcount_allocators);
947 
948 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_duplicate_clusters_by_page);
949 
950 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_duplicate_clusters_by_jbd);
951 
952 TRACE_EVENT(ocfs2_clear_ext_refcount,
953 	TP_PROTO(unsigned long long ino, unsigned int cpos,
954 		 unsigned int len, unsigned int p_cluster,
955 		 unsigned int ext_flags),
956 	TP_ARGS(ino, cpos, len, p_cluster, ext_flags),
957 	TP_STRUCT__entry(
958 		__field(unsigned long long, ino)
959 		__field(unsigned int, cpos)
960 		__field(unsigned int, len)
961 		__field(unsigned int, p_cluster)
962 		__field(unsigned int, ext_flags)
963 	),
964 	TP_fast_assign(
965 		__entry->ino = ino;
966 		__entry->cpos = cpos;
967 		__entry->len = len;
968 		__entry->p_cluster = p_cluster;
969 		__entry->ext_flags = ext_flags;
970 	),
971 	TP_printk("%llu %u %u %u %u",
972 		  __entry->ino, __entry->cpos, __entry->len,
973 		  __entry->p_cluster, __entry->ext_flags)
974 );
975 
976 TRACE_EVENT(ocfs2_replace_clusters,
977 	TP_PROTO(unsigned long long ino, unsigned int cpos,
978 		 unsigned int old, unsigned int new, unsigned int len,
979 		 unsigned int ext_flags),
980 	TP_ARGS(ino, cpos, old, new, len, ext_flags),
981 	TP_STRUCT__entry(
982 		__field(unsigned long long, ino)
983 		__field(unsigned int, cpos)
984 		__field(unsigned int, old)
985 		__field(unsigned int, new)
986 		__field(unsigned int, len)
987 		__field(unsigned int, ext_flags)
988 	),
989 	TP_fast_assign(
990 		__entry->ino = ino;
991 		__entry->cpos = cpos;
992 		__entry->old = old;
993 		__entry->new = new;
994 		__entry->len = len;
995 		__entry->ext_flags = ext_flags;
996 	),
997 	TP_printk("%llu %u %u %u %u %u",
998 		  __entry->ino, __entry->cpos, __entry->old, __entry->new,
999 		  __entry->len, __entry->ext_flags)
1000 );
1001 
1002 DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_make_clusters_writable);
1003 
1004 TRACE_EVENT(ocfs2_refcount_cow_hunk,
1005 	TP_PROTO(unsigned long long ino, unsigned int cpos,
1006 		 unsigned int write_len, unsigned int max_cpos,
1007 		 unsigned int cow_start, unsigned int cow_len),
1008 	TP_ARGS(ino, cpos, write_len, max_cpos, cow_start, cow_len),
1009 	TP_STRUCT__entry(
1010 		__field(unsigned long long, ino)
1011 		__field(unsigned int, cpos)
1012 		__field(unsigned int, write_len)
1013 		__field(unsigned int, max_cpos)
1014 		__field(unsigned int, cow_start)
1015 		__field(unsigned int, cow_len)
1016 	),
1017 	TP_fast_assign(
1018 		__entry->ino = ino;
1019 		__entry->cpos = cpos;
1020 		__entry->write_len = write_len;
1021 		__entry->max_cpos = max_cpos;
1022 		__entry->cow_start = cow_start;
1023 		__entry->cow_len = cow_len;
1024 	),
1025 	TP_printk("%llu %u %u %u %u %u",
1026 		  __entry->ino, __entry->cpos, __entry->write_len,
1027 		  __entry->max_cpos, __entry->cow_start, __entry->cow_len)
1028 );
1029 
1030 /* End of trace events for fs/ocfs2/refcounttree.c. */
1031 
1032 /* Trace events for fs/ocfs2/aops.c. */
1033 
1034 DECLARE_EVENT_CLASS(ocfs2__get_block,
1035 	TP_PROTO(unsigned long long ino, unsigned long long iblock,
1036 		 void *bh_result, int create),
1037 	TP_ARGS(ino, iblock, bh_result, create),
1038 	TP_STRUCT__entry(
1039 		__field(unsigned long long, ino)
1040 		__field(unsigned long long, iblock)
1041 		__field(void *, bh_result)
1042 		__field(int, create)
1043 	),
1044 	TP_fast_assign(
1045 		__entry->ino = ino;
1046 		__entry->iblock = iblock;
1047 		__entry->bh_result = bh_result;
1048 		__entry->create = create;
1049 	),
1050 	TP_printk("%llu %llu %p %d",
1051 		  __entry->ino, __entry->iblock,
1052 		  __entry->bh_result, __entry->create)
1053 );
1054 
1055 #define DEFINE_OCFS2_GET_BLOCK_EVENT(name)	\
1056 DEFINE_EVENT(ocfs2__get_block, name,	\
1057 	TP_PROTO(unsigned long long ino, unsigned long long iblock,	\
1058 		 void *bh_result, int create),	\
1059 	TP_ARGS(ino, iblock, bh_result, create))
1060 
1061 DEFINE_OCFS2_GET_BLOCK_EVENT(ocfs2_symlink_get_block);
1062 
1063 DEFINE_OCFS2_GET_BLOCK_EVENT(ocfs2_get_block);
1064 
1065 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_get_block_end);
1066 
1067 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_readpage);
1068 
1069 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_writepage);
1070 
1071 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_bmap);
1072 
1073 TRACE_EVENT(ocfs2_try_to_write_inline_data,
1074 	TP_PROTO(unsigned long long ino, unsigned int len,
1075 		 unsigned long long pos, unsigned int flags),
1076 	TP_ARGS(ino, len, pos, flags),
1077 	TP_STRUCT__entry(
1078 		__field(unsigned long long, ino)
1079 		__field(unsigned int, len)
1080 		__field(unsigned long long, pos)
1081 		__field(unsigned int, flags)
1082 	),
1083 	TP_fast_assign(
1084 		__entry->ino = ino;
1085 		__entry->len = len;
1086 		__entry->pos = pos;
1087 		__entry->flags = flags;
1088 	),
1089 	TP_printk("%llu %u %llu 0x%x",
1090 		  __entry->ino, __entry->len, __entry->pos, __entry->flags)
1091 );
1092 
1093 TRACE_EVENT(ocfs2_write_begin_nolock,
1094 	TP_PROTO(unsigned long long ino,
1095 		 long long i_size, unsigned int i_clusters,
1096 		 unsigned long long pos, unsigned int len,
1097 		 unsigned int flags, void *page,
1098 		 unsigned int clusters, unsigned int extents_to_split),
1099 	TP_ARGS(ino, i_size, i_clusters, pos, len, flags,
1100 		page, clusters, extents_to_split),
1101 	TP_STRUCT__entry(
1102 		__field(unsigned long long, ino)
1103 		__field(long long, i_size)
1104 		__field(unsigned int, i_clusters)
1105 		__field(unsigned long long, pos)
1106 		__field(unsigned int, len)
1107 		__field(unsigned int, flags)
1108 		__field(void *, page)
1109 		__field(unsigned int, clusters)
1110 		__field(unsigned int, extents_to_split)
1111 	),
1112 	TP_fast_assign(
1113 		__entry->ino = ino;
1114 		__entry->i_size = i_size;
1115 		__entry->i_clusters = i_clusters;
1116 		__entry->pos = pos;
1117 		__entry->len = len;
1118 		__entry->flags = flags;
1119 		__entry->page = page;
1120 		__entry->clusters = clusters;
1121 		__entry->extents_to_split = extents_to_split;
1122 	),
1123 	TP_printk("%llu %lld %u %llu %u %u %p %u %u",
1124 		  __entry->ino, __entry->i_size, __entry->i_clusters,
1125 		  __entry->pos, __entry->len,
1126 		  __entry->flags, __entry->page, __entry->clusters,
1127 		  __entry->extents_to_split)
1128 );
1129 
1130 TRACE_EVENT(ocfs2_write_end_inline,
1131 	TP_PROTO(unsigned long long ino,
1132 		 unsigned long long pos, unsigned int copied,
1133 		 unsigned int id_count, unsigned int features),
1134 	TP_ARGS(ino, pos, copied, id_count, features),
1135 	TP_STRUCT__entry(
1136 		__field(unsigned long long, ino)
1137 		__field(unsigned long long, pos)
1138 		__field(unsigned int, copied)
1139 		__field(unsigned int, id_count)
1140 		__field(unsigned int, features)
1141 	),
1142 	TP_fast_assign(
1143 		__entry->ino = ino;
1144 		__entry->pos = pos;
1145 		__entry->copied = copied;
1146 		__entry->id_count = id_count;
1147 		__entry->features = features;
1148 	),
1149 	TP_printk("%llu %llu %u %u %u",
1150 		  __entry->ino, __entry->pos, __entry->copied,
1151 		  __entry->id_count, __entry->features)
1152 );
1153 
1154 /* End of trace events for fs/ocfs2/aops.c. */
1155 
1156 /* Trace events for fs/ocfs2/mmap.c. */
1157 
1158 TRACE_EVENT(ocfs2_fault,
1159 	TP_PROTO(unsigned long long ino,
1160 		 void *area, void *page, unsigned long pgoff),
1161 	TP_ARGS(ino, area, page, pgoff),
1162 	TP_STRUCT__entry(
1163 		__field(unsigned long long, ino)
1164 		__field(void *, area)
1165 		__field(void *, page)
1166 		__field(unsigned long, pgoff)
1167 	),
1168 	TP_fast_assign(
1169 		__entry->ino = ino;
1170 		__entry->area = area;
1171 		__entry->page = page;
1172 		__entry->pgoff = pgoff;
1173 	),
1174 	TP_printk("%llu %p %p %lu",
1175 		  __entry->ino, __entry->area, __entry->page, __entry->pgoff)
1176 );
1177 
1178 /* End of trace events for fs/ocfs2/mmap.c. */
1179 
1180 /* Trace events for fs/ocfs2/file.c. */
1181 
1182 DECLARE_EVENT_CLASS(ocfs2__file_ops,
1183 	TP_PROTO(void *inode, void *file, void *dentry,
1184 		 unsigned long long ino,
1185 		 unsigned int d_len, const unsigned char *d_name,
1186 		 unsigned long long para),
1187 	TP_ARGS(inode, file, dentry, ino, d_len, d_name, para),
1188 	TP_STRUCT__entry(
1189 		__field(void *, inode)
1190 		__field(void *, file)
1191 		__field(void *, dentry)
1192 		__field(unsigned long long, ino)
1193 		__field(unsigned int, d_len)
1194 		__string(d_name, d_name)
1195 		__field(unsigned long long, para)
1196 	),
1197 	TP_fast_assign(
1198 		__entry->inode = inode;
1199 		__entry->file = file;
1200 		__entry->dentry = dentry;
1201 		__entry->ino = ino;
1202 		__entry->d_len = d_len;
1203 		__assign_str(d_name, d_name);
1204 		__entry->para = para;
1205 	),
1206 	TP_printk("%p %p %p %llu %llu %.*s", __entry->inode, __entry->file,
1207 		  __entry->dentry, __entry->ino, __entry->para,
1208 		  __entry->d_len, __get_str(d_name))
1209 );
1210 
1211 #define DEFINE_OCFS2_FILE_OPS(name)				\
1212 DEFINE_EVENT(ocfs2__file_ops, name,				\
1213 TP_PROTO(void *inode, void *file, void *dentry,			\
1214 	 unsigned long long ino,				\
1215 	 unsigned int d_len, const unsigned char *d_name,	\
1216 	 unsigned long long mode),				\
1217 	TP_ARGS(inode, file, dentry, ino, d_len, d_name, mode))
1218 
1219 DEFINE_OCFS2_FILE_OPS(ocfs2_file_open);
1220 
1221 DEFINE_OCFS2_FILE_OPS(ocfs2_file_release);
1222 
1223 DEFINE_OCFS2_FILE_OPS(ocfs2_sync_file);
1224 
1225 DEFINE_OCFS2_FILE_OPS(ocfs2_file_aio_write);
1226 
1227 DEFINE_OCFS2_FILE_OPS(ocfs2_file_splice_write);
1228 
1229 DEFINE_OCFS2_FILE_OPS(ocfs2_file_splice_read);
1230 
1231 DEFINE_OCFS2_FILE_OPS(ocfs2_file_aio_read);
1232 
1233 DEFINE_OCFS2_ULL_ULL_ULL_EVENT(ocfs2_truncate_file);
1234 
1235 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_truncate_file_error);
1236 
1237 TRACE_EVENT(ocfs2_extend_allocation,
1238 	TP_PROTO(unsigned long long ip_blkno, unsigned long long size,
1239 		 unsigned int clusters, unsigned int clusters_to_add,
1240 		 int why, int restart_func),
1241 	TP_ARGS(ip_blkno, size, clusters, clusters_to_add, why, restart_func),
1242 	TP_STRUCT__entry(
1243 		__field(unsigned long long, ip_blkno)
1244 		__field(unsigned long long, size)
1245 		__field(unsigned int, clusters)
1246 		__field(unsigned int, clusters_to_add)
1247 		__field(int, why)
1248 		__field(int, restart_func)
1249 	),
1250 	TP_fast_assign(
1251 		__entry->ip_blkno = ip_blkno;
1252 		__entry->size = size;
1253 		__entry->clusters = clusters;
1254 		__entry->clusters_to_add = clusters_to_add;
1255 		__entry->why = why;
1256 		__entry->restart_func = restart_func;
1257 	),
1258 	TP_printk("%llu %llu %u %u %d %d",
1259 		  __entry->ip_blkno, __entry->size, __entry->clusters,
1260 		  __entry->clusters_to_add, __entry->why, __entry->restart_func)
1261 );
1262 
1263 TRACE_EVENT(ocfs2_extend_allocation_end,
1264 	TP_PROTO(unsigned long long ino,
1265 		 unsigned int di_clusters, unsigned long long di_size,
1266 		 unsigned int ip_clusters, unsigned long long i_size),
1267 	TP_ARGS(ino, di_clusters, di_size, ip_clusters, i_size),
1268 	TP_STRUCT__entry(
1269 		__field(unsigned long long, ino)
1270 		__field(unsigned int, di_clusters)
1271 		__field(unsigned long long, di_size)
1272 		__field(unsigned int, ip_clusters)
1273 		__field(unsigned long long, i_size)
1274 	),
1275 	TP_fast_assign(
1276 		__entry->ino = ino;
1277 		__entry->di_clusters = di_clusters;
1278 		__entry->di_size = di_size;
1279 		__entry->ip_clusters = ip_clusters;
1280 		__entry->i_size = i_size;
1281 	),
1282 	TP_printk("%llu %u %llu %u %llu", __entry->ino, __entry->di_clusters,
1283 		  __entry->di_size, __entry->ip_clusters, __entry->i_size)
1284 );
1285 
1286 TRACE_EVENT(ocfs2_write_zero_page,
1287 	TP_PROTO(unsigned long long ino,
1288 		 unsigned long long abs_from, unsigned long long abs_to,
1289 		 unsigned long index, unsigned int zero_from,
1290 		 unsigned int zero_to),
1291 	TP_ARGS(ino, abs_from, abs_to, index, zero_from, zero_to),
1292 	TP_STRUCT__entry(
1293 		__field(unsigned long long, ino)
1294 		__field(unsigned long long, abs_from)
1295 		__field(unsigned long long, abs_to)
1296 		__field(unsigned long, index)
1297 		__field(unsigned int, zero_from)
1298 		__field(unsigned int, zero_to)
1299 	),
1300 	TP_fast_assign(
1301 		__entry->ino = ino;
1302 		__entry->abs_from = abs_from;
1303 		__entry->abs_to = abs_to;
1304 		__entry->index = index;
1305 		__entry->zero_from = zero_from;
1306 		__entry->zero_to = zero_to;
1307 	),
1308 	TP_printk("%llu %llu %llu %lu %u %u", __entry->ino,
1309 		  __entry->abs_from, __entry->abs_to,
1310 		  __entry->index, __entry->zero_from, __entry->zero_to)
1311 );
1312 
1313 DEFINE_OCFS2_ULL_ULL_ULL_EVENT(ocfs2_zero_extend_range);
1314 
1315 DEFINE_OCFS2_ULL_ULL_ULL_EVENT(ocfs2_zero_extend);
1316 
1317 TRACE_EVENT(ocfs2_setattr,
1318 	TP_PROTO(void *inode, void *dentry,
1319 		 unsigned long long ino,
1320 		 unsigned int d_len, const unsigned char *d_name,
1321 		 unsigned int ia_valid, unsigned int ia_mode,
1322 		 unsigned int ia_uid, unsigned int ia_gid),
1323 	TP_ARGS(inode, dentry, ino, d_len, d_name,
1324 		ia_valid, ia_mode, ia_uid, ia_gid),
1325 	TP_STRUCT__entry(
1326 		__field(void *, inode)
1327 		__field(void *, dentry)
1328 		__field(unsigned long long, ino)
1329 		__field(unsigned int, d_len)
1330 		__string(d_name, d_name)
1331 		__field(unsigned int, ia_valid)
1332 		__field(unsigned int, ia_mode)
1333 		__field(unsigned int, ia_uid)
1334 		__field(unsigned int, ia_gid)
1335 	),
1336 	TP_fast_assign(
1337 		__entry->inode = inode;
1338 		__entry->dentry = dentry;
1339 		__entry->ino = ino;
1340 		__entry->d_len = d_len;
1341 		__assign_str(d_name, d_name);
1342 		__entry->ia_valid = ia_valid;
1343 		__entry->ia_mode = ia_mode;
1344 		__entry->ia_uid = ia_uid;
1345 		__entry->ia_gid = ia_gid;
1346 	),
1347 	TP_printk("%p %p %llu %.*s %u %u %u %u", __entry->inode,
1348 		  __entry->dentry, __entry->ino, __entry->d_len,
1349 		  __get_str(d_name), __entry->ia_valid, __entry->ia_mode,
1350 		  __entry->ia_uid, __entry->ia_gid)
1351 );
1352 
1353 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_write_remove_suid);
1354 
1355 DEFINE_OCFS2_ULL_ULL_ULL_EVENT(ocfs2_zero_partial_clusters);
1356 
1357 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_zero_partial_clusters_range1);
1358 
1359 DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_zero_partial_clusters_range2);
1360 
1361 DEFINE_OCFS2_ULL_ULL_ULL_EVENT(ocfs2_remove_inode_range);
1362 
1363 TRACE_EVENT(ocfs2_prepare_inode_for_write,
1364 	TP_PROTO(unsigned long long ino, unsigned long long saved_pos,
1365 		 int appending, unsigned long count,
1366 		 int *direct_io, int *has_refcount),
1367 	TP_ARGS(ino, saved_pos, appending, count, direct_io, has_refcount),
1368 	TP_STRUCT__entry(
1369 		__field(unsigned long long, ino)
1370 		__field(unsigned long long, saved_pos)
1371 		__field(int, appending)
1372 		__field(unsigned long, count)
1373 		__field(int, direct_io)
1374 		__field(int, has_refcount)
1375 	),
1376 	TP_fast_assign(
1377 		__entry->ino = ino;
1378 		__entry->saved_pos = saved_pos;
1379 		__entry->appending = appending;
1380 		__entry->count = count;
1381 		__entry->direct_io = direct_io ? *direct_io : -1;
1382 		__entry->has_refcount = has_refcount ? *has_refcount : -1;
1383 	),
1384 	TP_printk("%llu %llu %d %lu %d %d", __entry->ino,
1385 		  __entry->saved_pos, __entry->appending, __entry->count,
1386 		  __entry->direct_io, __entry->has_refcount)
1387 );
1388 
1389 DEFINE_OCFS2_INT_EVENT(generic_file_aio_read_ret);
1390 
1391 /* End of trace events for fs/ocfs2/file.c. */
1392 
1393 /* Trace events for fs/ocfs2/inode.c. */
1394 
1395 TRACE_EVENT(ocfs2_iget_begin,
1396 	TP_PROTO(unsigned long long ino, unsigned int flags, int sysfile_type),
1397 	TP_ARGS(ino, flags, sysfile_type),
1398 	TP_STRUCT__entry(
1399 		__field(unsigned long long, ino)
1400 		__field(unsigned int, flags)
1401 		__field(int, sysfile_type)
1402 	),
1403 	TP_fast_assign(
1404 		__entry->ino = ino;
1405 		__entry->flags = flags;
1406 		__entry->sysfile_type = sysfile_type;
1407 	),
1408 	TP_printk("%llu %u %d", __entry->ino,
1409 		  __entry->flags, __entry->sysfile_type)
1410 );
1411 
1412 DEFINE_OCFS2_ULL_EVENT(ocfs2_iget5_locked);
1413 
1414 TRACE_EVENT(ocfs2_iget_end,
1415 	TP_PROTO(void *inode, unsigned long long ino),
1416 	TP_ARGS(inode, ino),
1417 	TP_STRUCT__entry(
1418 		__field(void *, inode)
1419 		__field(unsigned long long, ino)
1420 	),
1421 	TP_fast_assign(
1422 		__entry->inode = inode;
1423 		__entry->ino = ino;
1424 	),
1425 	TP_printk("%p %llu", __entry->inode, __entry->ino)
1426 );
1427 
1428 TRACE_EVENT(ocfs2_find_actor,
1429 	TP_PROTO(void *inode, unsigned long long ino,
1430 		 void *args,  unsigned long long fi_blkno),
1431 	TP_ARGS(inode, ino, args, fi_blkno),
1432 	TP_STRUCT__entry(
1433 		__field(void *, inode)
1434 		__field(unsigned long long, ino)
1435 		__field(void *, args)
1436 		__field(unsigned long long, fi_blkno)
1437 	),
1438 	TP_fast_assign(
1439 		__entry->inode = inode;
1440 		__entry->ino = ino;
1441 		__entry->args = args;
1442 		__entry->fi_blkno = fi_blkno;
1443 	),
1444 	TP_printk("%p %llu %p %llu", __entry->inode, __entry->ino,
1445 		  __entry->args, __entry->fi_blkno)
1446 );
1447 
1448 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_populate_inode);
1449 
1450 DEFINE_OCFS2_ULL_INT_EVENT(ocfs2_read_locked_inode);
1451 
1452 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_check_orphan_recovery_state);
1453 
1454 DEFINE_OCFS2_ULL_EVENT(ocfs2_validate_inode_block);
1455 
1456 TRACE_EVENT(ocfs2_inode_is_valid_to_delete,
1457 	TP_PROTO(void *task, void *dc_task, unsigned long long ino,
1458 		 unsigned int flags),
1459 	TP_ARGS(task, dc_task, ino, flags),
1460 	TP_STRUCT__entry(
1461 		__field(void *, task)
1462 		__field(void *, dc_task)
1463 		__field(unsigned long long, ino)
1464 		__field(unsigned int, flags)
1465 	),
1466 	TP_fast_assign(
1467 		__entry->task = task;
1468 		__entry->dc_task = dc_task;
1469 		__entry->ino = ino;
1470 		__entry->flags = flags;
1471 	),
1472 	TP_printk("%p %p %llu %u", __entry->task, __entry->dc_task,
1473 		  __entry->ino, __entry->flags)
1474 );
1475 
1476 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_query_inode_wipe_begin);
1477 
1478 DEFINE_OCFS2_UINT_EVENT(ocfs2_query_inode_wipe_succ);
1479 
1480 DEFINE_OCFS2_INT_INT_EVENT(ocfs2_query_inode_wipe_end);
1481 
1482 DEFINE_OCFS2_ULL_INT_EVENT(ocfs2_cleanup_delete_inode);
1483 
1484 DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_delete_inode);
1485 
1486 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_clear_inode);
1487 
1488 DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_drop_inode);
1489 
1490 TRACE_EVENT(ocfs2_inode_revalidate,
1491 	TP_PROTO(void *inode, unsigned long long ino,
1492 		 unsigned int flags),
1493 	TP_ARGS(inode, ino, flags),
1494 	TP_STRUCT__entry(
1495 		__field(void *, inode)
1496 		__field(unsigned long long, ino)
1497 		__field(unsigned int, flags)
1498 	),
1499 	TP_fast_assign(
1500 		__entry->inode = inode;
1501 		__entry->ino = ino;
1502 		__entry->flags = flags;
1503 	),
1504 	TP_printk("%p %llu %u", __entry->inode, __entry->ino, __entry->flags)
1505 );
1506 
1507 DEFINE_OCFS2_ULL_EVENT(ocfs2_mark_inode_dirty);
1508 
1509 /* End of trace events for fs/ocfs2/inode.c. */
1510 
1511 /* Trace events for fs/ocfs2/extent_map.c. */
1512 
1513 TRACE_EVENT(ocfs2_read_virt_blocks,
1514 	TP_PROTO(void *inode, unsigned long long vblock, int nr,
1515 		 void *bhs, unsigned int flags, void *validate),
1516 	TP_ARGS(inode, vblock, nr, bhs, flags, validate),
1517 	TP_STRUCT__entry(
1518 		__field(void *, inode)
1519 		__field(unsigned long long, vblock)
1520 		__field(int, nr)
1521 		__field(void *, bhs)
1522 		__field(unsigned int, flags)
1523 		__field(void *, validate)
1524 	),
1525 	TP_fast_assign(
1526 		__entry->inode = inode;
1527 		__entry->vblock = vblock;
1528 		__entry->nr = nr;
1529 		__entry->bhs = bhs;
1530 		__entry->flags = flags;
1531 		__entry->validate = validate;
1532 	),
1533 	TP_printk("%p %llu %d %p %x %p", __entry->inode, __entry->vblock,
1534 		  __entry->nr, __entry->bhs, __entry->flags, __entry->validate)
1535 );
1536 
1537 /* End of trace events for fs/ocfs2/extent_map.c. */
1538 
1539 /* Trace events for fs/ocfs2/slot_map.c. */
1540 
1541 DEFINE_OCFS2_UINT_EVENT(ocfs2_refresh_slot_info);
1542 
1543 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_map_slot_buffers);
1544 
1545 DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_map_slot_buffers_block);
1546 
1547 DEFINE_OCFS2_INT_EVENT(ocfs2_find_slot);
1548 
1549 /* End of trace events for fs/ocfs2/slot_map.c. */
1550 
1551 /* Trace events for fs/ocfs2/heartbeat.c. */
1552 
1553 DEFINE_OCFS2_INT_EVENT(ocfs2_do_node_down);
1554 
1555 /* End of trace events for fs/ocfs2/heartbeat.c. */
1556 
1557 /* Trace events for fs/ocfs2/super.c. */
1558 
1559 TRACE_EVENT(ocfs2_remount,
1560 	TP_PROTO(unsigned long s_flags, unsigned long osb_flags, int flags),
1561 	TP_ARGS(s_flags, osb_flags, flags),
1562 	TP_STRUCT__entry(
1563 		__field(unsigned long, s_flags)
1564 		__field(unsigned long, osb_flags)
1565 		__field(int, flags)
1566 	),
1567 	TP_fast_assign(
1568 		__entry->s_flags = s_flags;
1569 		__entry->osb_flags = osb_flags;
1570 		__entry->flags = flags;
1571 	),
1572 	TP_printk("%lu %lu %d", __entry->s_flags,
1573 		  __entry->osb_flags, __entry->flags)
1574 );
1575 
1576 TRACE_EVENT(ocfs2_fill_super,
1577 	TP_PROTO(void *sb, void *data, int silent),
1578 	TP_ARGS(sb, data, silent),
1579 	TP_STRUCT__entry(
1580 		__field(void *, sb)
1581 		__field(void *, data)
1582 		__field(int, silent)
1583 	),
1584 	TP_fast_assign(
1585 		__entry->sb = sb;
1586 		__entry->data = data;
1587 		__entry->silent = silent;
1588 	),
1589 	TP_printk("%p %p %d", __entry->sb,
1590 		  __entry->data, __entry->silent)
1591 );
1592 
1593 TRACE_EVENT(ocfs2_parse_options,
1594 	TP_PROTO(int is_remount, char *options),
1595 	TP_ARGS(is_remount, options),
1596 	TP_STRUCT__entry(
1597 		__field(int, is_remount)
1598 		__string(options, options)
1599 	),
1600 	TP_fast_assign(
1601 		__entry->is_remount = is_remount;
1602 		__assign_str(options, options);
1603 	),
1604 	TP_printk("%d %s", __entry->is_remount, __get_str(options))
1605 );
1606 
1607 DEFINE_OCFS2_POINTER_EVENT(ocfs2_put_super);
1608 
1609 TRACE_EVENT(ocfs2_statfs,
1610 	TP_PROTO(void *sb, void *buf),
1611 	TP_ARGS(sb, buf),
1612 	TP_STRUCT__entry(
1613 		__field(void *, sb)
1614 		__field(void *, buf)
1615 	),
1616 	TP_fast_assign(
1617 		__entry->sb = sb;
1618 		__entry->buf = buf;
1619 	),
1620 	TP_printk("%p %p", __entry->sb, __entry->buf)
1621 );
1622 
1623 DEFINE_OCFS2_POINTER_EVENT(ocfs2_dismount_volume);
1624 
1625 TRACE_EVENT(ocfs2_initialize_super,
1626 	TP_PROTO(char *label, char *uuid_str, unsigned long long root_dir,
1627 		 unsigned long long system_dir, int cluster_bits),
1628 	TP_ARGS(label, uuid_str, root_dir, system_dir, cluster_bits),
1629 	TP_STRUCT__entry(
1630 		__string(label, label)
1631 		__string(uuid_str, uuid_str)
1632 		__field(unsigned long long, root_dir)
1633 		__field(unsigned long long, system_dir)
1634 		__field(int, cluster_bits)
1635 	),
1636 	TP_fast_assign(
1637 		__assign_str(label, label);
1638 		__assign_str(uuid_str, uuid_str);
1639 		__entry->root_dir = root_dir;
1640 		__entry->system_dir = system_dir;
1641 		__entry->cluster_bits = cluster_bits;
1642 	),
1643 	TP_printk("%s %s %llu %llu %d", __get_str(label), __get_str(uuid_str),
1644 		  __entry->root_dir, __entry->system_dir, __entry->cluster_bits)
1645 );
1646 
1647 /* End of trace events for fs/ocfs2/super.c. */
1648 #endif /* _TRACE_OCFS2_H */
1649 
1650 /* This part must be outside protection */
1651 #undef TRACE_INCLUDE_PATH
1652 #define TRACE_INCLUDE_PATH .
1653 #define TRACE_INCLUDE_FILE ocfs2_trace
1654 #include <trace/define_trace.h>
1655