1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2017 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <darrick.wong@oracle.com>
7 #define TRACE_SYSTEM xfs_scrub
9 #if !defined(_TRACE_XFS_SCRUB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
10 #define _TRACE_XFS_SCRUB_TRACE_H
12 #include <linux/tracepoint.h>
16 * ftrace's __print_symbolic requires that all enum values be wrapped in the
17 * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
18 * ring buffer. Somehow this was only worth mentioning in the ftrace sample
21 TRACE_DEFINE_ENUM(XFS_BTNUM_BNOi);
22 TRACE_DEFINE_ENUM(XFS_BTNUM_CNTi);
23 TRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi);
24 TRACE_DEFINE_ENUM(XFS_BTNUM_INOi);
25 TRACE_DEFINE_ENUM(XFS_BTNUM_FINOi);
26 TRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi);
27 TRACE_DEFINE_ENUM(XFS_BTNUM_REFCi);
29 DECLARE_EVENT_CLASS(xchk_class,
30 TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm,
32 TP_ARGS(ip, sm, error),
35 __field(xfs_ino_t, ino)
36 __field(unsigned int, type)
37 __field(xfs_agnumber_t, agno)
38 __field(xfs_ino_t, inum)
39 __field(unsigned int, gen)
40 __field(unsigned int, flags)
44 __entry->dev = ip->i_mount->m_super->s_dev;
45 __entry->ino = ip->i_ino;
46 __entry->type = sm->sm_type;
47 __entry->agno = sm->sm_agno;
48 __entry->inum = sm->sm_ino;
49 __entry->gen = sm->sm_gen;
50 __entry->flags = sm->sm_flags;
51 __entry->error = error;
53 TP_printk("dev %d:%d ino 0x%llx type %u agno %u inum %llu gen %u flags 0x%x error %d",
54 MAJOR(__entry->dev), MINOR(__entry->dev),
63 #define DEFINE_SCRUB_EVENT(name) \
64 DEFINE_EVENT(xchk_class, name, \
65 TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, \
67 TP_ARGS(ip, sm, error))
69 DEFINE_SCRUB_EVENT(xchk_start);
70 DEFINE_SCRUB_EVENT(xchk_done);
71 DEFINE_SCRUB_EVENT(xchk_deadlock_retry);
72 DEFINE_SCRUB_EVENT(xrep_attempt);
73 DEFINE_SCRUB_EVENT(xrep_done);
75 TRACE_EVENT(xchk_op_error,
76 TP_PROTO(struct xfs_scrub *sc, xfs_agnumber_t agno,
77 xfs_agblock_t bno, int error, void *ret_ip),
78 TP_ARGS(sc, agno, bno, error, ret_ip),
81 __field(unsigned int, type)
82 __field(xfs_agnumber_t, agno)
83 __field(xfs_agblock_t, bno)
85 __field(void *, ret_ip)
88 __entry->dev = sc->mp->m_super->s_dev;
89 __entry->type = sc->sm->sm_type;
92 __entry->error = error;
93 __entry->ret_ip = ret_ip;
95 TP_printk("dev %d:%d type %u agno %u agbno %u error %d ret_ip %pS",
96 MAJOR(__entry->dev), MINOR(__entry->dev),
104 TRACE_EVENT(xchk_file_op_error,
105 TP_PROTO(struct xfs_scrub *sc, int whichfork,
106 xfs_fileoff_t offset, int error, void *ret_ip),
107 TP_ARGS(sc, whichfork, offset, error, ret_ip),
110 __field(xfs_ino_t, ino)
111 __field(int, whichfork)
112 __field(unsigned int, type)
113 __field(xfs_fileoff_t, offset)
115 __field(void *, ret_ip)
118 __entry->dev = sc->ip->i_mount->m_super->s_dev;
119 __entry->ino = sc->ip->i_ino;
120 __entry->whichfork = whichfork;
121 __entry->type = sc->sm->sm_type;
122 __entry->offset = offset;
123 __entry->error = error;
124 __entry->ret_ip = ret_ip;
126 TP_printk("dev %d:%d ino 0x%llx fork %d type %u offset %llu error %d ret_ip %pS",
127 MAJOR(__entry->dev), MINOR(__entry->dev),
136 DECLARE_EVENT_CLASS(xchk_block_error_class,
137 TP_PROTO(struct xfs_scrub *sc, xfs_daddr_t daddr, void *ret_ip),
138 TP_ARGS(sc, daddr, ret_ip),
141 __field(unsigned int, type)
142 __field(xfs_agnumber_t, agno)
143 __field(xfs_agblock_t, bno)
144 __field(void *, ret_ip)
151 fsbno = XFS_DADDR_TO_FSB(sc->mp, daddr);
152 agno = XFS_FSB_TO_AGNO(sc->mp, fsbno);
153 bno = XFS_FSB_TO_AGBNO(sc->mp, fsbno);
155 __entry->dev = sc->mp->m_super->s_dev;
156 __entry->type = sc->sm->sm_type;
157 __entry->agno = agno;
159 __entry->ret_ip = ret_ip;
161 TP_printk("dev %d:%d type %u agno %u agbno %u ret_ip %pS",
162 MAJOR(__entry->dev), MINOR(__entry->dev),
169 #define DEFINE_SCRUB_BLOCK_ERROR_EVENT(name) \
170 DEFINE_EVENT(xchk_block_error_class, name, \
171 TP_PROTO(struct xfs_scrub *sc, xfs_daddr_t daddr, \
173 TP_ARGS(sc, daddr, ret_ip))
175 DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_error);
176 DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_preen);
178 DECLARE_EVENT_CLASS(xchk_ino_error_class,
179 TP_PROTO(struct xfs_scrub *sc, xfs_ino_t ino, void *ret_ip),
180 TP_ARGS(sc, ino, ret_ip),
183 __field(xfs_ino_t, ino)
184 __field(unsigned int, type)
185 __field(void *, ret_ip)
188 __entry->dev = sc->mp->m_super->s_dev;
190 __entry->type = sc->sm->sm_type;
191 __entry->ret_ip = ret_ip;
193 TP_printk("dev %d:%d ino 0x%llx type %u ret_ip %pS",
194 MAJOR(__entry->dev), MINOR(__entry->dev),
200 #define DEFINE_SCRUB_INO_ERROR_EVENT(name) \
201 DEFINE_EVENT(xchk_ino_error_class, name, \
202 TP_PROTO(struct xfs_scrub *sc, xfs_ino_t ino, \
204 TP_ARGS(sc, ino, ret_ip))
206 DEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_error);
207 DEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_preen);
208 DEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_warning);
210 DECLARE_EVENT_CLASS(xchk_fblock_error_class,
211 TP_PROTO(struct xfs_scrub *sc, int whichfork,
212 xfs_fileoff_t offset, void *ret_ip),
213 TP_ARGS(sc, whichfork, offset, ret_ip),
216 __field(xfs_ino_t, ino)
217 __field(int, whichfork)
218 __field(unsigned int, type)
219 __field(xfs_fileoff_t, offset)
220 __field(void *, ret_ip)
223 __entry->dev = sc->ip->i_mount->m_super->s_dev;
224 __entry->ino = sc->ip->i_ino;
225 __entry->whichfork = whichfork;
226 __entry->type = sc->sm->sm_type;
227 __entry->offset = offset;
228 __entry->ret_ip = ret_ip;
230 TP_printk("dev %d:%d ino 0x%llx fork %d type %u offset %llu ret_ip %pS",
231 MAJOR(__entry->dev), MINOR(__entry->dev),
239 #define DEFINE_SCRUB_FBLOCK_ERROR_EVENT(name) \
240 DEFINE_EVENT(xchk_fblock_error_class, name, \
241 TP_PROTO(struct xfs_scrub *sc, int whichfork, \
242 xfs_fileoff_t offset, void *ret_ip), \
243 TP_ARGS(sc, whichfork, offset, ret_ip))
245 DEFINE_SCRUB_FBLOCK_ERROR_EVENT(xchk_fblock_error);
246 DEFINE_SCRUB_FBLOCK_ERROR_EVENT(xchk_fblock_warning);
248 TRACE_EVENT(xchk_incomplete,
249 TP_PROTO(struct xfs_scrub *sc, void *ret_ip),
253 __field(unsigned int, type)
254 __field(void *, ret_ip)
257 __entry->dev = sc->mp->m_super->s_dev;
258 __entry->type = sc->sm->sm_type;
259 __entry->ret_ip = ret_ip;
261 TP_printk("dev %d:%d type %u ret_ip %pS",
262 MAJOR(__entry->dev), MINOR(__entry->dev),
267 TRACE_EVENT(xchk_btree_op_error,
268 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
269 int level, int error, void *ret_ip),
270 TP_ARGS(sc, cur, level, error, ret_ip),
273 __field(unsigned int, type)
274 __field(xfs_btnum_t, btnum)
276 __field(xfs_agnumber_t, agno)
277 __field(xfs_agblock_t, bno)
280 __field(void *, ret_ip)
283 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
285 __entry->dev = sc->mp->m_super->s_dev;
286 __entry->type = sc->sm->sm_type;
287 __entry->btnum = cur->bc_btnum;
288 __entry->level = level;
289 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
290 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
291 __entry->ptr = cur->bc_ptrs[level];
292 __entry->error = error;
293 __entry->ret_ip = ret_ip;
295 TP_printk("dev %d:%d type %u btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
296 MAJOR(__entry->dev), MINOR(__entry->dev),
298 __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
307 TRACE_EVENT(xchk_ifork_btree_op_error,
308 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
309 int level, int error, void *ret_ip),
310 TP_ARGS(sc, cur, level, error, ret_ip),
313 __field(xfs_ino_t, ino)
314 __field(int, whichfork)
315 __field(unsigned int, type)
316 __field(xfs_btnum_t, btnum)
319 __field(xfs_agnumber_t, agno)
320 __field(xfs_agblock_t, bno)
322 __field(void *, ret_ip)
325 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
326 __entry->dev = sc->mp->m_super->s_dev;
327 __entry->ino = sc->ip->i_ino;
328 __entry->whichfork = cur->bc_private.b.whichfork;
329 __entry->type = sc->sm->sm_type;
330 __entry->btnum = cur->bc_btnum;
331 __entry->level = level;
332 __entry->ptr = cur->bc_ptrs[level];
333 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
334 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
335 __entry->error = error;
336 __entry->ret_ip = ret_ip;
338 TP_printk("dev %d:%d ino 0x%llx fork %d type %u btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
339 MAJOR(__entry->dev), MINOR(__entry->dev),
343 __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
352 TRACE_EVENT(xchk_btree_error,
353 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
354 int level, void *ret_ip),
355 TP_ARGS(sc, cur, level, ret_ip),
358 __field(unsigned int, type)
359 __field(xfs_btnum_t, btnum)
361 __field(xfs_agnumber_t, agno)
362 __field(xfs_agblock_t, bno)
364 __field(void *, ret_ip)
367 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
368 __entry->dev = sc->mp->m_super->s_dev;
369 __entry->type = sc->sm->sm_type;
370 __entry->btnum = cur->bc_btnum;
371 __entry->level = level;
372 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
373 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
374 __entry->ptr = cur->bc_ptrs[level];
375 __entry->ret_ip = ret_ip;
377 TP_printk("dev %d:%d type %u btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
378 MAJOR(__entry->dev), MINOR(__entry->dev),
380 __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
388 TRACE_EVENT(xchk_ifork_btree_error,
389 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
390 int level, void *ret_ip),
391 TP_ARGS(sc, cur, level, ret_ip),
394 __field(xfs_ino_t, ino)
395 __field(int, whichfork)
396 __field(unsigned int, type)
397 __field(xfs_btnum_t, btnum)
399 __field(xfs_agnumber_t, agno)
400 __field(xfs_agblock_t, bno)
402 __field(void *, ret_ip)
405 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
406 __entry->dev = sc->mp->m_super->s_dev;
407 __entry->ino = sc->ip->i_ino;
408 __entry->whichfork = cur->bc_private.b.whichfork;
409 __entry->type = sc->sm->sm_type;
410 __entry->btnum = cur->bc_btnum;
411 __entry->level = level;
412 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
413 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
414 __entry->ptr = cur->bc_ptrs[level];
415 __entry->ret_ip = ret_ip;
417 TP_printk("dev %d:%d ino 0x%llx fork %d type %u btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
418 MAJOR(__entry->dev), MINOR(__entry->dev),
422 __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
430 DECLARE_EVENT_CLASS(xchk_sbtree_class,
431 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
433 TP_ARGS(sc, cur, level),
437 __field(xfs_btnum_t, btnum)
438 __field(xfs_agnumber_t, agno)
439 __field(xfs_agblock_t, bno)
441 __field(int, nlevels)
445 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
447 __entry->dev = sc->mp->m_super->s_dev;
448 __entry->type = sc->sm->sm_type;
449 __entry->btnum = cur->bc_btnum;
450 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
451 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
452 __entry->level = level;
453 __entry->nlevels = cur->bc_nlevels;
454 __entry->ptr = cur->bc_ptrs[level];
456 TP_printk("dev %d:%d type %u btree %s agno %u agbno %u level %d nlevels %d ptr %d",
457 MAJOR(__entry->dev), MINOR(__entry->dev),
459 __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
466 #define DEFINE_SCRUB_SBTREE_EVENT(name) \
467 DEFINE_EVENT(xchk_sbtree_class, name, \
468 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, \
470 TP_ARGS(sc, cur, level))
472 DEFINE_SCRUB_SBTREE_EVENT(xchk_btree_rec);
473 DEFINE_SCRUB_SBTREE_EVENT(xchk_btree_key);
475 TRACE_EVENT(xchk_xref_error,
476 TP_PROTO(struct xfs_scrub *sc, int error, void *ret_ip),
477 TP_ARGS(sc, error, ret_ip),
482 __field(void *, ret_ip)
485 __entry->dev = sc->mp->m_super->s_dev;
486 __entry->type = sc->sm->sm_type;
487 __entry->error = error;
488 __entry->ret_ip = ret_ip;
490 TP_printk("dev %d:%d type %u xref error %d ret_ip %pS",
491 MAJOR(__entry->dev), MINOR(__entry->dev),
497 /* repair tracepoints */
498 #if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR)
500 DECLARE_EVENT_CLASS(xrep_extent_class,
501 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
502 xfs_agblock_t agbno, xfs_extlen_t len),
503 TP_ARGS(mp, agno, agbno, len),
506 __field(xfs_agnumber_t, agno)
507 __field(xfs_agblock_t, agbno)
508 __field(xfs_extlen_t, len)
511 __entry->dev = mp->m_super->s_dev;
512 __entry->agno = agno;
513 __entry->agbno = agbno;
516 TP_printk("dev %d:%d agno %u agbno %u len %u",
517 MAJOR(__entry->dev), MINOR(__entry->dev),
522 #define DEFINE_REPAIR_EXTENT_EVENT(name) \
523 DEFINE_EVENT(xrep_extent_class, name, \
524 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
525 xfs_agblock_t agbno, xfs_extlen_t len), \
526 TP_ARGS(mp, agno, agbno, len))
527 DEFINE_REPAIR_EXTENT_EVENT(xrep_dispose_btree_extent);
528 DEFINE_REPAIR_EXTENT_EVENT(xrep_agfl_insert);
530 DECLARE_EVENT_CLASS(xrep_rmap_class,
531 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
532 xfs_agblock_t agbno, xfs_extlen_t len,
533 uint64_t owner, uint64_t offset, unsigned int flags),
534 TP_ARGS(mp, agno, agbno, len, owner, offset, flags),
537 __field(xfs_agnumber_t, agno)
538 __field(xfs_agblock_t, agbno)
539 __field(xfs_extlen_t, len)
540 __field(uint64_t, owner)
541 __field(uint64_t, offset)
542 __field(unsigned int, flags)
545 __entry->dev = mp->m_super->s_dev;
546 __entry->agno = agno;
547 __entry->agbno = agbno;
549 __entry->owner = owner;
550 __entry->offset = offset;
551 __entry->flags = flags;
553 TP_printk("dev %d:%d agno %u agbno %u len %u owner %lld offset %llu flags 0x%x",
554 MAJOR(__entry->dev), MINOR(__entry->dev),
562 #define DEFINE_REPAIR_RMAP_EVENT(name) \
563 DEFINE_EVENT(xrep_rmap_class, name, \
564 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
565 xfs_agblock_t agbno, xfs_extlen_t len, \
566 uint64_t owner, uint64_t offset, unsigned int flags), \
567 TP_ARGS(mp, agno, agbno, len, owner, offset, flags))
568 DEFINE_REPAIR_RMAP_EVENT(xrep_alloc_extent_fn);
569 DEFINE_REPAIR_RMAP_EVENT(xrep_ialloc_extent_fn);
570 DEFINE_REPAIR_RMAP_EVENT(xrep_rmap_extent_fn);
571 DEFINE_REPAIR_RMAP_EVENT(xrep_bmap_extent_fn);
573 TRACE_EVENT(xrep_refcount_extent_fn,
574 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
575 struct xfs_refcount_irec *irec),
576 TP_ARGS(mp, agno, irec),
579 __field(xfs_agnumber_t, agno)
580 __field(xfs_agblock_t, startblock)
581 __field(xfs_extlen_t, blockcount)
582 __field(xfs_nlink_t, refcount)
585 __entry->dev = mp->m_super->s_dev;
586 __entry->agno = agno;
587 __entry->startblock = irec->rc_startblock;
588 __entry->blockcount = irec->rc_blockcount;
589 __entry->refcount = irec->rc_refcount;
591 TP_printk("dev %d:%d agno %u agbno %u len %u refcount %u",
592 MAJOR(__entry->dev), MINOR(__entry->dev),
599 TRACE_EVENT(xrep_init_btblock,
600 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
602 TP_ARGS(mp, agno, agbno, btnum),
605 __field(xfs_agnumber_t, agno)
606 __field(xfs_agblock_t, agbno)
607 __field(uint32_t, btnum)
610 __entry->dev = mp->m_super->s_dev;
611 __entry->agno = agno;
612 __entry->agbno = agbno;
613 __entry->btnum = btnum;
615 TP_printk("dev %d:%d agno %u agbno %u btree %s",
616 MAJOR(__entry->dev), MINOR(__entry->dev),
619 __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS))
621 TRACE_EVENT(xrep_findroot_block,
622 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
623 uint32_t magic, uint16_t level),
624 TP_ARGS(mp, agno, agbno, magic, level),
627 __field(xfs_agnumber_t, agno)
628 __field(xfs_agblock_t, agbno)
629 __field(uint32_t, magic)
630 __field(uint16_t, level)
633 __entry->dev = mp->m_super->s_dev;
634 __entry->agno = agno;
635 __entry->agbno = agbno;
636 __entry->magic = magic;
637 __entry->level = level;
639 TP_printk("dev %d:%d agno %u agbno %u magic 0x%x level %u",
640 MAJOR(__entry->dev), MINOR(__entry->dev),
646 TRACE_EVENT(xrep_calc_ag_resblks,
647 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
648 xfs_agino_t icount, xfs_agblock_t aglen, xfs_agblock_t freelen,
649 xfs_agblock_t usedlen),
650 TP_ARGS(mp, agno, icount, aglen, freelen, usedlen),
653 __field(xfs_agnumber_t, agno)
654 __field(xfs_agino_t, icount)
655 __field(xfs_agblock_t, aglen)
656 __field(xfs_agblock_t, freelen)
657 __field(xfs_agblock_t, usedlen)
660 __entry->dev = mp->m_super->s_dev;
661 __entry->agno = agno;
662 __entry->icount = icount;
663 __entry->aglen = aglen;
664 __entry->freelen = freelen;
665 __entry->usedlen = usedlen;
667 TP_printk("dev %d:%d agno %d icount %u aglen %u freelen %u usedlen %u",
668 MAJOR(__entry->dev), MINOR(__entry->dev),
675 TRACE_EVENT(xrep_calc_ag_resblks_btsize,
676 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
677 xfs_agblock_t bnobt_sz, xfs_agblock_t inobt_sz,
678 xfs_agblock_t rmapbt_sz, xfs_agblock_t refcbt_sz),
679 TP_ARGS(mp, agno, bnobt_sz, inobt_sz, rmapbt_sz, refcbt_sz),
682 __field(xfs_agnumber_t, agno)
683 __field(xfs_agblock_t, bnobt_sz)
684 __field(xfs_agblock_t, inobt_sz)
685 __field(xfs_agblock_t, rmapbt_sz)
686 __field(xfs_agblock_t, refcbt_sz)
689 __entry->dev = mp->m_super->s_dev;
690 __entry->agno = agno;
691 __entry->bnobt_sz = bnobt_sz;
692 __entry->inobt_sz = inobt_sz;
693 __entry->rmapbt_sz = rmapbt_sz;
694 __entry->refcbt_sz = refcbt_sz;
696 TP_printk("dev %d:%d agno %d bno %u ino %u rmap %u refcount %u",
697 MAJOR(__entry->dev), MINOR(__entry->dev),
704 TRACE_EVENT(xrep_reset_counters,
705 TP_PROTO(struct xfs_mount *mp),
711 __entry->dev = mp->m_super->s_dev;
713 TP_printk("dev %d:%d",
714 MAJOR(__entry->dev), MINOR(__entry->dev))
717 TRACE_EVENT(xrep_ialloc_insert,
718 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
719 xfs_agino_t startino, uint16_t holemask, uint8_t count,
720 uint8_t freecount, uint64_t freemask),
721 TP_ARGS(mp, agno, startino, holemask, count, freecount, freemask),
724 __field(xfs_agnumber_t, agno)
725 __field(xfs_agino_t, startino)
726 __field(uint16_t, holemask)
727 __field(uint8_t, count)
728 __field(uint8_t, freecount)
729 __field(uint64_t, freemask)
732 __entry->dev = mp->m_super->s_dev;
733 __entry->agno = agno;
734 __entry->startino = startino;
735 __entry->holemask = holemask;
736 __entry->count = count;
737 __entry->freecount = freecount;
738 __entry->freemask = freemask;
740 TP_printk("dev %d:%d agno %d startino %u holemask 0x%x count %u freecount %u freemask 0x%llx",
741 MAJOR(__entry->dev), MINOR(__entry->dev),
750 #endif /* IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) */
752 #endif /* _TRACE_XFS_SCRUB_TRACE_H */
754 #undef TRACE_INCLUDE_PATH
755 #define TRACE_INCLUDE_PATH .
756 #define TRACE_INCLUDE_FILE scrub/trace
757 #include <trace/define_trace.h>