xfs: convert to SPDX license tags
[linux-block.git] / fs / xfs / scrub / trace.h
CommitLineData
0b61f8a4 1// SPDX-License-Identifier: GPL-2.0+
36fd6e86
DW
2/*
3 * Copyright (C) 2017 Oracle. All Rights Reserved.
36fd6e86 4 * Author: Darrick J. Wong <darrick.wong@oracle.com>
36fd6e86
DW
5 */
6#undef TRACE_SYSTEM
7#define TRACE_SYSTEM xfs_scrub
8
9#if !defined(_TRACE_XFS_SCRUB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
10#define _TRACE_XFS_SCRUB_TRACE_H
11
12#include <linux/tracepoint.h>
4700d229 13#include "xfs_bit.h"
36fd6e86 14
a5637186
DW
15DECLARE_EVENT_CLASS(xfs_scrub_class,
16 TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm,
17 int error),
18 TP_ARGS(ip, sm, error),
19 TP_STRUCT__entry(
20 __field(dev_t, dev)
21 __field(xfs_ino_t, ino)
22 __field(unsigned int, type)
23 __field(xfs_agnumber_t, agno)
24 __field(xfs_ino_t, inum)
25 __field(unsigned int, gen)
26 __field(unsigned int, flags)
27 __field(int, error)
28 ),
29 TP_fast_assign(
30 __entry->dev = ip->i_mount->m_super->s_dev;
31 __entry->ino = ip->i_ino;
32 __entry->type = sm->sm_type;
33 __entry->agno = sm->sm_agno;
34 __entry->inum = sm->sm_ino;
35 __entry->gen = sm->sm_gen;
36 __entry->flags = sm->sm_flags;
37 __entry->error = error;
38 ),
67a3f6d0 39 TP_printk("dev %d:%d ino 0x%llx type %u agno %u inum %llu gen %u flags 0x%x error %d",
a5637186
DW
40 MAJOR(__entry->dev), MINOR(__entry->dev),
41 __entry->ino,
42 __entry->type,
43 __entry->agno,
44 __entry->inum,
45 __entry->gen,
46 __entry->flags,
47 __entry->error)
48)
49#define DEFINE_SCRUB_EVENT(name) \
50DEFINE_EVENT(xfs_scrub_class, name, \
51 TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, \
52 int error), \
53 TP_ARGS(ip, sm, error))
54
55DEFINE_SCRUB_EVENT(xfs_scrub_start);
56DEFINE_SCRUB_EVENT(xfs_scrub_done);
4700d229 57DEFINE_SCRUB_EVENT(xfs_scrub_deadlock_retry);
718fa74b
DW
58DEFINE_SCRUB_EVENT(xfs_repair_attempt);
59DEFINE_SCRUB_EVENT(xfs_repair_done);
4700d229
DW
60
61TRACE_EVENT(xfs_scrub_op_error,
62 TP_PROTO(struct xfs_scrub_context *sc, xfs_agnumber_t agno,
63 xfs_agblock_t bno, int error, void *ret_ip),
64 TP_ARGS(sc, agno, bno, error, ret_ip),
65 TP_STRUCT__entry(
66 __field(dev_t, dev)
67 __field(unsigned int, type)
68 __field(xfs_agnumber_t, agno)
69 __field(xfs_agblock_t, bno)
70 __field(int, error)
71 __field(void *, ret_ip)
72 ),
73 TP_fast_assign(
74 __entry->dev = sc->mp->m_super->s_dev;
75 __entry->type = sc->sm->sm_type;
76 __entry->agno = agno;
77 __entry->bno = bno;
78 __entry->error = error;
79 __entry->ret_ip = ret_ip;
80 ),
aff68a55 81 TP_printk("dev %d:%d type %u agno %u agbno %u error %d ret_ip %pS",
4700d229
DW
82 MAJOR(__entry->dev), MINOR(__entry->dev),
83 __entry->type,
84 __entry->agno,
85 __entry->bno,
86 __entry->error,
87 __entry->ret_ip)
88);
89
90TRACE_EVENT(xfs_scrub_file_op_error,
91 TP_PROTO(struct xfs_scrub_context *sc, int whichfork,
92 xfs_fileoff_t offset, int error, void *ret_ip),
93 TP_ARGS(sc, whichfork, offset, error, ret_ip),
94 TP_STRUCT__entry(
95 __field(dev_t, dev)
96 __field(xfs_ino_t, ino)
97 __field(int, whichfork)
98 __field(unsigned int, type)
99 __field(xfs_fileoff_t, offset)
100 __field(int, error)
101 __field(void *, ret_ip)
102 ),
103 TP_fast_assign(
104 __entry->dev = sc->ip->i_mount->m_super->s_dev;
105 __entry->ino = sc->ip->i_ino;
106 __entry->whichfork = whichfork;
107 __entry->type = sc->sm->sm_type;
108 __entry->offset = offset;
109 __entry->error = error;
110 __entry->ret_ip = ret_ip;
111 ),
67a3f6d0 112 TP_printk("dev %d:%d ino 0x%llx fork %d type %u offset %llu error %d ret_ip %pS",
4700d229
DW
113 MAJOR(__entry->dev), MINOR(__entry->dev),
114 __entry->ino,
115 __entry->whichfork,
116 __entry->type,
117 __entry->offset,
118 __entry->error,
119 __entry->ret_ip)
120);
121
122DECLARE_EVENT_CLASS(xfs_scrub_block_error_class,
123 TP_PROTO(struct xfs_scrub_context *sc, xfs_daddr_t daddr, void *ret_ip),
124 TP_ARGS(sc, daddr, ret_ip),
125 TP_STRUCT__entry(
126 __field(dev_t, dev)
127 __field(unsigned int, type)
128 __field(xfs_agnumber_t, agno)
129 __field(xfs_agblock_t, bno)
130 __field(void *, ret_ip)
131 ),
132 TP_fast_assign(
133 xfs_fsblock_t fsbno;
134 xfs_agnumber_t agno;
135 xfs_agblock_t bno;
136
137 fsbno = XFS_DADDR_TO_FSB(sc->mp, daddr);
138 agno = XFS_FSB_TO_AGNO(sc->mp, fsbno);
139 bno = XFS_FSB_TO_AGBNO(sc->mp, fsbno);
140
141 __entry->dev = sc->mp->m_super->s_dev;
142 __entry->type = sc->sm->sm_type;
143 __entry->agno = agno;
144 __entry->bno = bno;
145 __entry->ret_ip = ret_ip;
146 ),
aff68a55 147 TP_printk("dev %d:%d type %u agno %u agbno %u ret_ip %pS",
4700d229
DW
148 MAJOR(__entry->dev), MINOR(__entry->dev),
149 __entry->type,
150 __entry->agno,
151 __entry->bno,
152 __entry->ret_ip)
153)
154
155#define DEFINE_SCRUB_BLOCK_ERROR_EVENT(name) \
156DEFINE_EVENT(xfs_scrub_block_error_class, name, \
157 TP_PROTO(struct xfs_scrub_context *sc, xfs_daddr_t daddr, \
158 void *ret_ip), \
159 TP_ARGS(sc, daddr, ret_ip))
160
161DEFINE_SCRUB_BLOCK_ERROR_EVENT(xfs_scrub_block_error);
162DEFINE_SCRUB_BLOCK_ERROR_EVENT(xfs_scrub_block_preen);
163
164DECLARE_EVENT_CLASS(xfs_scrub_ino_error_class,
7e56d9ea
DW
165 TP_PROTO(struct xfs_scrub_context *sc, xfs_ino_t ino, void *ret_ip),
166 TP_ARGS(sc, ino, ret_ip),
4700d229
DW
167 TP_STRUCT__entry(
168 __field(dev_t, dev)
169 __field(xfs_ino_t, ino)
170 __field(unsigned int, type)
4700d229
DW
171 __field(void *, ret_ip)
172 ),
173 TP_fast_assign(
4700d229
DW
174 __entry->dev = sc->mp->m_super->s_dev;
175 __entry->ino = ino;
176 __entry->type = sc->sm->sm_type;
4700d229
DW
177 __entry->ret_ip = ret_ip;
178 ),
7e56d9ea 179 TP_printk("dev %d:%d ino 0x%llx type %u ret_ip %pS",
4700d229
DW
180 MAJOR(__entry->dev), MINOR(__entry->dev),
181 __entry->ino,
182 __entry->type,
4700d229
DW
183 __entry->ret_ip)
184)
185
186#define DEFINE_SCRUB_INO_ERROR_EVENT(name) \
187DEFINE_EVENT(xfs_scrub_ino_error_class, name, \
188 TP_PROTO(struct xfs_scrub_context *sc, xfs_ino_t ino, \
7e56d9ea
DW
189 void *ret_ip), \
190 TP_ARGS(sc, ino, ret_ip))
4700d229
DW
191
192DEFINE_SCRUB_INO_ERROR_EVENT(xfs_scrub_ino_error);
193DEFINE_SCRUB_INO_ERROR_EVENT(xfs_scrub_ino_preen);
194DEFINE_SCRUB_INO_ERROR_EVENT(xfs_scrub_ino_warning);
195
196DECLARE_EVENT_CLASS(xfs_scrub_fblock_error_class,
197 TP_PROTO(struct xfs_scrub_context *sc, int whichfork,
198 xfs_fileoff_t offset, void *ret_ip),
199 TP_ARGS(sc, whichfork, offset, ret_ip),
200 TP_STRUCT__entry(
201 __field(dev_t, dev)
202 __field(xfs_ino_t, ino)
203 __field(int, whichfork)
204 __field(unsigned int, type)
205 __field(xfs_fileoff_t, offset)
206 __field(void *, ret_ip)
207 ),
208 TP_fast_assign(
209 __entry->dev = sc->ip->i_mount->m_super->s_dev;
210 __entry->ino = sc->ip->i_ino;
211 __entry->whichfork = whichfork;
212 __entry->type = sc->sm->sm_type;
213 __entry->offset = offset;
214 __entry->ret_ip = ret_ip;
215 ),
67a3f6d0 216 TP_printk("dev %d:%d ino 0x%llx fork %d type %u offset %llu ret_ip %pS",
4700d229
DW
217 MAJOR(__entry->dev), MINOR(__entry->dev),
218 __entry->ino,
219 __entry->whichfork,
220 __entry->type,
221 __entry->offset,
222 __entry->ret_ip)
223);
224
225#define DEFINE_SCRUB_FBLOCK_ERROR_EVENT(name) \
226DEFINE_EVENT(xfs_scrub_fblock_error_class, name, \
227 TP_PROTO(struct xfs_scrub_context *sc, int whichfork, \
228 xfs_fileoff_t offset, void *ret_ip), \
229 TP_ARGS(sc, whichfork, offset, ret_ip))
230
231DEFINE_SCRUB_FBLOCK_ERROR_EVENT(xfs_scrub_fblock_error);
232DEFINE_SCRUB_FBLOCK_ERROR_EVENT(xfs_scrub_fblock_warning);
233
234TRACE_EVENT(xfs_scrub_incomplete,
235 TP_PROTO(struct xfs_scrub_context *sc, void *ret_ip),
236 TP_ARGS(sc, ret_ip),
237 TP_STRUCT__entry(
238 __field(dev_t, dev)
239 __field(unsigned int, type)
240 __field(void *, ret_ip)
241 ),
242 TP_fast_assign(
243 __entry->dev = sc->mp->m_super->s_dev;
244 __entry->type = sc->sm->sm_type;
245 __entry->ret_ip = ret_ip;
246 ),
aff68a55 247 TP_printk("dev %d:%d type %u ret_ip %pS",
4700d229
DW
248 MAJOR(__entry->dev), MINOR(__entry->dev),
249 __entry->type,
250 __entry->ret_ip)
251);
a5637186 252
537964bc
DW
253TRACE_EVENT(xfs_scrub_btree_op_error,
254 TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
255 int level, int error, void *ret_ip),
256 TP_ARGS(sc, cur, level, error, ret_ip),
257 TP_STRUCT__entry(
258 __field(dev_t, dev)
259 __field(unsigned int, type)
260 __field(xfs_btnum_t, btnum)
261 __field(int, level)
262 __field(xfs_agnumber_t, agno)
263 __field(xfs_agblock_t, bno)
264 __field(int, ptr);
265 __field(int, error)
266 __field(void *, ret_ip)
267 ),
268 TP_fast_assign(
269 xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
270
271 __entry->dev = sc->mp->m_super->s_dev;
272 __entry->type = sc->sm->sm_type;
273 __entry->btnum = cur->bc_btnum;
274 __entry->level = level;
275 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
276 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
277 __entry->ptr = cur->bc_ptrs[level];
278 __entry->error = error;
279 __entry->ret_ip = ret_ip;
280 ),
aff68a55 281 TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
537964bc
DW
282 MAJOR(__entry->dev), MINOR(__entry->dev),
283 __entry->type,
284 __entry->btnum,
285 __entry->level,
286 __entry->ptr,
287 __entry->agno,
288 __entry->bno,
289 __entry->error,
290 __entry->ret_ip)
291);
292
293TRACE_EVENT(xfs_scrub_ifork_btree_op_error,
294 TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
295 int level, int error, void *ret_ip),
296 TP_ARGS(sc, cur, level, error, ret_ip),
297 TP_STRUCT__entry(
298 __field(dev_t, dev)
299 __field(xfs_ino_t, ino)
300 __field(int, whichfork)
301 __field(unsigned int, type)
302 __field(xfs_btnum_t, btnum)
303 __field(int, level)
304 __field(int, ptr)
305 __field(xfs_agnumber_t, agno)
306 __field(xfs_agblock_t, bno)
307 __field(int, error)
308 __field(void *, ret_ip)
309 ),
310 TP_fast_assign(
311 xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
312 __entry->dev = sc->mp->m_super->s_dev;
313 __entry->ino = sc->ip->i_ino;
314 __entry->whichfork = cur->bc_private.b.whichfork;
315 __entry->type = sc->sm->sm_type;
316 __entry->btnum = cur->bc_btnum;
317 __entry->level = level;
318 __entry->ptr = cur->bc_ptrs[level];
319 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
320 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
321 __entry->error = error;
322 __entry->ret_ip = ret_ip;
323 ),
67a3f6d0 324 TP_printk("dev %d:%d ino 0x%llx fork %d type %u btnum %d level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
537964bc
DW
325 MAJOR(__entry->dev), MINOR(__entry->dev),
326 __entry->ino,
327 __entry->whichfork,
328 __entry->type,
329 __entry->btnum,
330 __entry->level,
331 __entry->ptr,
332 __entry->agno,
333 __entry->bno,
334 __entry->error,
335 __entry->ret_ip)
336);
337
338TRACE_EVENT(xfs_scrub_btree_error,
339 TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
340 int level, void *ret_ip),
341 TP_ARGS(sc, cur, level, ret_ip),
342 TP_STRUCT__entry(
343 __field(dev_t, dev)
344 __field(unsigned int, type)
345 __field(xfs_btnum_t, btnum)
346 __field(int, level)
347 __field(xfs_agnumber_t, agno)
348 __field(xfs_agblock_t, bno)
349 __field(int, ptr);
350 __field(void *, ret_ip)
351 ),
352 TP_fast_assign(
353 xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
354 __entry->dev = sc->mp->m_super->s_dev;
355 __entry->type = sc->sm->sm_type;
356 __entry->btnum = cur->bc_btnum;
357 __entry->level = level;
358 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
359 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
360 __entry->ptr = cur->bc_ptrs[level];
361 __entry->ret_ip = ret_ip;
362 ),
aff68a55 363 TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u ret_ip %pS",
537964bc
DW
364 MAJOR(__entry->dev), MINOR(__entry->dev),
365 __entry->type,
366 __entry->btnum,
367 __entry->level,
368 __entry->ptr,
369 __entry->agno,
370 __entry->bno,
371 __entry->ret_ip)
372);
373
374TRACE_EVENT(xfs_scrub_ifork_btree_error,
375 TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
376 int level, void *ret_ip),
377 TP_ARGS(sc, cur, level, ret_ip),
378 TP_STRUCT__entry(
379 __field(dev_t, dev)
380 __field(xfs_ino_t, ino)
381 __field(int, whichfork)
382 __field(unsigned int, type)
383 __field(xfs_btnum_t, btnum)
384 __field(int, level)
385 __field(xfs_agnumber_t, agno)
386 __field(xfs_agblock_t, bno)
387 __field(int, ptr);
388 __field(void *, ret_ip)
389 ),
390 TP_fast_assign(
391 xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
392 __entry->dev = sc->mp->m_super->s_dev;
393 __entry->ino = sc->ip->i_ino;
394 __entry->whichfork = cur->bc_private.b.whichfork;
395 __entry->type = sc->sm->sm_type;
396 __entry->btnum = cur->bc_btnum;
397 __entry->level = level;
398 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
399 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
400 __entry->ptr = cur->bc_ptrs[level];
401 __entry->ret_ip = ret_ip;
402 ),
67a3f6d0 403 TP_printk("dev %d:%d ino 0x%llx fork %d type %u btnum %d level %d ptr %d agno %u agbno %u ret_ip %pS",
537964bc
DW
404 MAJOR(__entry->dev), MINOR(__entry->dev),
405 __entry->ino,
406 __entry->whichfork,
407 __entry->type,
408 __entry->btnum,
409 __entry->level,
410 __entry->ptr,
411 __entry->agno,
412 __entry->bno,
413 __entry->ret_ip)
414);
415
37f3fa7f
DW
416DECLARE_EVENT_CLASS(xfs_scrub_sbtree_class,
417 TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
418 int level),
419 TP_ARGS(sc, cur, level),
420 TP_STRUCT__entry(
421 __field(dev_t, dev)
422 __field(int, type)
423 __field(xfs_btnum_t, btnum)
424 __field(xfs_agnumber_t, agno)
425 __field(xfs_agblock_t, bno)
426 __field(int, level)
427 __field(int, nlevels)
428 __field(int, ptr)
429 ),
430 TP_fast_assign(
431 xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
432
433 __entry->dev = sc->mp->m_super->s_dev;
434 __entry->type = sc->sm->sm_type;
435 __entry->btnum = cur->bc_btnum;
436 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
437 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
438 __entry->level = level;
439 __entry->nlevels = cur->bc_nlevels;
440 __entry->ptr = cur->bc_ptrs[level];
441 ),
442 TP_printk("dev %d:%d type %u btnum %d agno %u agbno %u level %d nlevels %d ptr %d",
443 MAJOR(__entry->dev), MINOR(__entry->dev),
444 __entry->type,
445 __entry->btnum,
446 __entry->agno,
447 __entry->bno,
448 __entry->level,
449 __entry->nlevels,
450 __entry->ptr)
451)
452#define DEFINE_SCRUB_SBTREE_EVENT(name) \
453DEFINE_EVENT(xfs_scrub_sbtree_class, name, \
454 TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur, \
455 int level), \
456 TP_ARGS(sc, cur, level))
457
458DEFINE_SCRUB_SBTREE_EVENT(xfs_scrub_btree_rec);
459DEFINE_SCRUB_SBTREE_EVENT(xfs_scrub_btree_key);
460
64b12563
DW
461TRACE_EVENT(xfs_scrub_xref_error,
462 TP_PROTO(struct xfs_scrub_context *sc, int error, void *ret_ip),
463 TP_ARGS(sc, error, ret_ip),
464 TP_STRUCT__entry(
465 __field(dev_t, dev)
466 __field(int, type)
467 __field(int, error)
468 __field(void *, ret_ip)
469 ),
470 TP_fast_assign(
471 __entry->dev = sc->mp->m_super->s_dev;
472 __entry->type = sc->sm->sm_type;
473 __entry->error = error;
474 __entry->ret_ip = ret_ip;
475 ),
476 TP_printk("dev %d:%d type %u xref error %d ret_ip %pF",
477 MAJOR(__entry->dev), MINOR(__entry->dev),
478 __entry->type,
479 __entry->error,
480 __entry->ret_ip)
481);
482
718fa74b
DW
483/* repair tracepoints */
484#if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR)
485
486DECLARE_EVENT_CLASS(xfs_repair_extent_class,
487 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
488 xfs_agblock_t agbno, xfs_extlen_t len),
489 TP_ARGS(mp, agno, agbno, len),
490 TP_STRUCT__entry(
491 __field(dev_t, dev)
492 __field(xfs_agnumber_t, agno)
493 __field(xfs_agblock_t, agbno)
494 __field(xfs_extlen_t, len)
495 ),
496 TP_fast_assign(
497 __entry->dev = mp->m_super->s_dev;
498 __entry->agno = agno;
499 __entry->agbno = agbno;
500 __entry->len = len;
501 ),
502 TP_printk("dev %d:%d agno %u agbno %u len %u",
503 MAJOR(__entry->dev), MINOR(__entry->dev),
504 __entry->agno,
505 __entry->agbno,
506 __entry->len)
507);
508#define DEFINE_REPAIR_EXTENT_EVENT(name) \
509DEFINE_EVENT(xfs_repair_extent_class, name, \
510 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
511 xfs_agblock_t agbno, xfs_extlen_t len), \
512 TP_ARGS(mp, agno, agbno, len))
513DEFINE_REPAIR_EXTENT_EVENT(xfs_repair_dispose_btree_extent);
514DEFINE_REPAIR_EXTENT_EVENT(xfs_repair_collect_btree_extent);
515DEFINE_REPAIR_EXTENT_EVENT(xfs_repair_agfl_insert);
516
517DECLARE_EVENT_CLASS(xfs_repair_rmap_class,
518 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
519 xfs_agblock_t agbno, xfs_extlen_t len,
520 uint64_t owner, uint64_t offset, unsigned int flags),
521 TP_ARGS(mp, agno, agbno, len, owner, offset, flags),
522 TP_STRUCT__entry(
523 __field(dev_t, dev)
524 __field(xfs_agnumber_t, agno)
525 __field(xfs_agblock_t, agbno)
526 __field(xfs_extlen_t, len)
527 __field(uint64_t, owner)
528 __field(uint64_t, offset)
529 __field(unsigned int, flags)
530 ),
531 TP_fast_assign(
532 __entry->dev = mp->m_super->s_dev;
533 __entry->agno = agno;
534 __entry->agbno = agbno;
535 __entry->len = len;
536 __entry->owner = owner;
537 __entry->offset = offset;
538 __entry->flags = flags;
539 ),
540 TP_printk("dev %d:%d agno %u agbno %u len %u owner %lld offset %llu flags 0x%x",
541 MAJOR(__entry->dev), MINOR(__entry->dev),
542 __entry->agno,
543 __entry->agbno,
544 __entry->len,
545 __entry->owner,
546 __entry->offset,
547 __entry->flags)
548);
549#define DEFINE_REPAIR_RMAP_EVENT(name) \
550DEFINE_EVENT(xfs_repair_rmap_class, name, \
551 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
552 xfs_agblock_t agbno, xfs_extlen_t len, \
553 uint64_t owner, uint64_t offset, unsigned int flags), \
554 TP_ARGS(mp, agno, agbno, len, owner, offset, flags))
555DEFINE_REPAIR_RMAP_EVENT(xfs_repair_alloc_extent_fn);
556DEFINE_REPAIR_RMAP_EVENT(xfs_repair_ialloc_extent_fn);
557DEFINE_REPAIR_RMAP_EVENT(xfs_repair_rmap_extent_fn);
558DEFINE_REPAIR_RMAP_EVENT(xfs_repair_bmap_extent_fn);
559
560TRACE_EVENT(xfs_repair_refcount_extent_fn,
561 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
562 struct xfs_refcount_irec *irec),
563 TP_ARGS(mp, agno, irec),
564 TP_STRUCT__entry(
565 __field(dev_t, dev)
566 __field(xfs_agnumber_t, agno)
567 __field(xfs_agblock_t, startblock)
568 __field(xfs_extlen_t, blockcount)
569 __field(xfs_nlink_t, refcount)
570 ),
571 TP_fast_assign(
572 __entry->dev = mp->m_super->s_dev;
573 __entry->agno = agno;
574 __entry->startblock = irec->rc_startblock;
575 __entry->blockcount = irec->rc_blockcount;
576 __entry->refcount = irec->rc_refcount;
577 ),
578 TP_printk("dev %d:%d agno %u agbno %u len %u refcount %u",
579 MAJOR(__entry->dev), MINOR(__entry->dev),
580 __entry->agno,
581 __entry->startblock,
582 __entry->blockcount,
583 __entry->refcount)
584)
585
586TRACE_EVENT(xfs_repair_init_btblock,
587 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
588 xfs_btnum_t btnum),
589 TP_ARGS(mp, agno, agbno, btnum),
590 TP_STRUCT__entry(
591 __field(dev_t, dev)
592 __field(xfs_agnumber_t, agno)
593 __field(xfs_agblock_t, agbno)
594 __field(uint32_t, btnum)
595 ),
596 TP_fast_assign(
597 __entry->dev = mp->m_super->s_dev;
598 __entry->agno = agno;
599 __entry->agbno = agbno;
600 __entry->btnum = btnum;
601 ),
602 TP_printk("dev %d:%d agno %u agbno %u btnum %d",
603 MAJOR(__entry->dev), MINOR(__entry->dev),
604 __entry->agno,
605 __entry->agbno,
606 __entry->btnum)
607)
608TRACE_EVENT(xfs_repair_findroot_block,
609 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
610 uint32_t magic, uint16_t level),
611 TP_ARGS(mp, agno, agbno, magic, level),
612 TP_STRUCT__entry(
613 __field(dev_t, dev)
614 __field(xfs_agnumber_t, agno)
615 __field(xfs_agblock_t, agbno)
616 __field(uint32_t, magic)
617 __field(uint16_t, level)
618 ),
619 TP_fast_assign(
620 __entry->dev = mp->m_super->s_dev;
621 __entry->agno = agno;
622 __entry->agbno = agbno;
623 __entry->magic = magic;
624 __entry->level = level;
625 ),
626 TP_printk("dev %d:%d agno %u agbno %u magic 0x%x level %u",
627 MAJOR(__entry->dev), MINOR(__entry->dev),
628 __entry->agno,
629 __entry->agbno,
630 __entry->magic,
631 __entry->level)
632)
633TRACE_EVENT(xfs_repair_calc_ag_resblks,
634 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
635 xfs_agino_t icount, xfs_agblock_t aglen, xfs_agblock_t freelen,
636 xfs_agblock_t usedlen),
637 TP_ARGS(mp, agno, icount, aglen, freelen, usedlen),
638 TP_STRUCT__entry(
639 __field(dev_t, dev)
640 __field(xfs_agnumber_t, agno)
641 __field(xfs_agino_t, icount)
642 __field(xfs_agblock_t, aglen)
643 __field(xfs_agblock_t, freelen)
644 __field(xfs_agblock_t, usedlen)
645 ),
646 TP_fast_assign(
647 __entry->dev = mp->m_super->s_dev;
648 __entry->agno = agno;
649 __entry->icount = icount;
650 __entry->aglen = aglen;
651 __entry->freelen = freelen;
652 __entry->usedlen = usedlen;
653 ),
654 TP_printk("dev %d:%d agno %d icount %u aglen %u freelen %u usedlen %u",
655 MAJOR(__entry->dev), MINOR(__entry->dev),
656 __entry->agno,
657 __entry->icount,
658 __entry->aglen,
659 __entry->freelen,
660 __entry->usedlen)
661)
662TRACE_EVENT(xfs_repair_calc_ag_resblks_btsize,
663 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
664 xfs_agblock_t bnobt_sz, xfs_agblock_t inobt_sz,
665 xfs_agblock_t rmapbt_sz, xfs_agblock_t refcbt_sz),
666 TP_ARGS(mp, agno, bnobt_sz, inobt_sz, rmapbt_sz, refcbt_sz),
667 TP_STRUCT__entry(
668 __field(dev_t, dev)
669 __field(xfs_agnumber_t, agno)
670 __field(xfs_agblock_t, bnobt_sz)
671 __field(xfs_agblock_t, inobt_sz)
672 __field(xfs_agblock_t, rmapbt_sz)
673 __field(xfs_agblock_t, refcbt_sz)
674 ),
675 TP_fast_assign(
676 __entry->dev = mp->m_super->s_dev;
677 __entry->agno = agno;
678 __entry->bnobt_sz = bnobt_sz;
679 __entry->inobt_sz = inobt_sz;
680 __entry->rmapbt_sz = rmapbt_sz;
681 __entry->refcbt_sz = refcbt_sz;
682 ),
683 TP_printk("dev %d:%d agno %d bno %u ino %u rmap %u refcount %u",
684 MAJOR(__entry->dev), MINOR(__entry->dev),
685 __entry->agno,
686 __entry->bnobt_sz,
687 __entry->inobt_sz,
688 __entry->rmapbt_sz,
689 __entry->refcbt_sz)
690)
691TRACE_EVENT(xfs_repair_reset_counters,
692 TP_PROTO(struct xfs_mount *mp),
693 TP_ARGS(mp),
694 TP_STRUCT__entry(
695 __field(dev_t, dev)
696 ),
697 TP_fast_assign(
698 __entry->dev = mp->m_super->s_dev;
699 ),
700 TP_printk("dev %d:%d",
701 MAJOR(__entry->dev), MINOR(__entry->dev))
702)
703
704TRACE_EVENT(xfs_repair_ialloc_insert,
705 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
706 xfs_agino_t startino, uint16_t holemask, uint8_t count,
707 uint8_t freecount, uint64_t freemask),
708 TP_ARGS(mp, agno, startino, holemask, count, freecount, freemask),
709 TP_STRUCT__entry(
710 __field(dev_t, dev)
711 __field(xfs_agnumber_t, agno)
712 __field(xfs_agino_t, startino)
713 __field(uint16_t, holemask)
714 __field(uint8_t, count)
715 __field(uint8_t, freecount)
716 __field(uint64_t, freemask)
717 ),
718 TP_fast_assign(
719 __entry->dev = mp->m_super->s_dev;
720 __entry->agno = agno;
721 __entry->startino = startino;
722 __entry->holemask = holemask;
723 __entry->count = count;
724 __entry->freecount = freecount;
725 __entry->freemask = freemask;
726 ),
727 TP_printk("dev %d:%d agno %d startino %u holemask 0x%x count %u freecount %u freemask 0x%llx",
728 MAJOR(__entry->dev), MINOR(__entry->dev),
729 __entry->agno,
730 __entry->startino,
731 __entry->holemask,
732 __entry->count,
733 __entry->freecount,
734 __entry->freemask)
735)
736
737#endif /* IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) */
738
36fd6e86
DW
739#endif /* _TRACE_XFS_SCRUB_TRACE_H */
740
741#undef TRACE_INCLUDE_PATH
742#define TRACE_INCLUDE_PATH .
743#define TRACE_INCLUDE_FILE scrub/trace
744#include <trace/define_trace.h>