forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/fs/xfs/scrub/trace.h
....@@ -12,6 +12,73 @@
1212 #include <linux/tracepoint.h>
1313 #include "xfs_bit.h"
1414
15
+/*
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
19
+ * code.
20
+ */
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);
28
+
29
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PROBE);
30
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_SB);
31
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGF);
32
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGFL);
33
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGI);
34
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BNOBT);
35
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_CNTBT);
36
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_INOBT);
37
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_FINOBT);
38
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RMAPBT);
39
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_REFCNTBT);
40
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_INODE);
41
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTD);
42
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTA);
43
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTC);
44
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_DIR);
45
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_XATTR);
46
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_SYMLINK);
47
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PARENT);
48
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RTBITMAP);
49
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RTSUM);
50
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_UQUOTA);
51
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_GQUOTA);
52
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PQUOTA);
53
+TRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_FSCOUNTERS);
54
+
55
+#define XFS_SCRUB_TYPE_STRINGS \
56
+ { XFS_SCRUB_TYPE_PROBE, "probe" }, \
57
+ { XFS_SCRUB_TYPE_SB, "sb" }, \
58
+ { XFS_SCRUB_TYPE_AGF, "agf" }, \
59
+ { XFS_SCRUB_TYPE_AGFL, "agfl" }, \
60
+ { XFS_SCRUB_TYPE_AGI, "agi" }, \
61
+ { XFS_SCRUB_TYPE_BNOBT, "bnobt" }, \
62
+ { XFS_SCRUB_TYPE_CNTBT, "cntbt" }, \
63
+ { XFS_SCRUB_TYPE_INOBT, "inobt" }, \
64
+ { XFS_SCRUB_TYPE_FINOBT, "finobt" }, \
65
+ { XFS_SCRUB_TYPE_RMAPBT, "rmapbt" }, \
66
+ { XFS_SCRUB_TYPE_REFCNTBT, "refcountbt" }, \
67
+ { XFS_SCRUB_TYPE_INODE, "inode" }, \
68
+ { XFS_SCRUB_TYPE_BMBTD, "bmapbtd" }, \
69
+ { XFS_SCRUB_TYPE_BMBTA, "bmapbta" }, \
70
+ { XFS_SCRUB_TYPE_BMBTC, "bmapbtc" }, \
71
+ { XFS_SCRUB_TYPE_DIR, "directory" }, \
72
+ { XFS_SCRUB_TYPE_XATTR, "xattr" }, \
73
+ { XFS_SCRUB_TYPE_SYMLINK, "symlink" }, \
74
+ { XFS_SCRUB_TYPE_PARENT, "parent" }, \
75
+ { XFS_SCRUB_TYPE_RTBITMAP, "rtbitmap" }, \
76
+ { XFS_SCRUB_TYPE_RTSUM, "rtsummary" }, \
77
+ { XFS_SCRUB_TYPE_UQUOTA, "usrquota" }, \
78
+ { XFS_SCRUB_TYPE_GQUOTA, "grpquota" }, \
79
+ { XFS_SCRUB_TYPE_PQUOTA, "prjquota" }, \
80
+ { XFS_SCRUB_TYPE_FSCOUNTERS, "fscounters" }
81
+
1582 DECLARE_EVENT_CLASS(xchk_class,
1683 TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm,
1784 int error),
....@@ -36,10 +103,10 @@
36103 __entry->flags = sm->sm_flags;
37104 __entry->error = error;
38105 ),
39
- TP_printk("dev %d:%d ino 0x%llx type %u agno %u inum %llu gen %u flags 0x%x error %d",
106
+ TP_printk("dev %d:%d ino 0x%llx type %s agno %u inum %llu gen %u flags 0x%x error %d",
40107 MAJOR(__entry->dev), MINOR(__entry->dev),
41108 __entry->ino,
42
- __entry->type,
109
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
43110 __entry->agno,
44111 __entry->inum,
45112 __entry->gen,
....@@ -78,9 +145,9 @@
78145 __entry->error = error;
79146 __entry->ret_ip = ret_ip;
80147 ),
81
- TP_printk("dev %d:%d type %u agno %u agbno %u error %d ret_ip %pS",
148
+ TP_printk("dev %d:%d type %s agno %u agbno %u error %d ret_ip %pS",
82149 MAJOR(__entry->dev), MINOR(__entry->dev),
83
- __entry->type,
150
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
84151 __entry->agno,
85152 __entry->bno,
86153 __entry->error,
....@@ -109,11 +176,11 @@
109176 __entry->error = error;
110177 __entry->ret_ip = ret_ip;
111178 ),
112
- TP_printk("dev %d:%d ino 0x%llx fork %d type %u offset %llu error %d ret_ip %pS",
179
+ TP_printk("dev %d:%d ino 0x%llx fork %d type %s offset %llu error %d ret_ip %pS",
113180 MAJOR(__entry->dev), MINOR(__entry->dev),
114181 __entry->ino,
115182 __entry->whichfork,
116
- __entry->type,
183
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
117184 __entry->offset,
118185 __entry->error,
119186 __entry->ret_ip)
....@@ -144,9 +211,9 @@
144211 __entry->bno = bno;
145212 __entry->ret_ip = ret_ip;
146213 ),
147
- TP_printk("dev %d:%d type %u agno %u agbno %u ret_ip %pS",
214
+ TP_printk("dev %d:%d type %s agno %u agbno %u ret_ip %pS",
148215 MAJOR(__entry->dev), MINOR(__entry->dev),
149
- __entry->type,
216
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
150217 __entry->agno,
151218 __entry->bno,
152219 __entry->ret_ip)
....@@ -158,6 +225,7 @@
158225 void *ret_ip), \
159226 TP_ARGS(sc, daddr, ret_ip))
160227
228
+DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_fs_error);
161229 DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_error);
162230 DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_preen);
163231
....@@ -176,10 +244,10 @@
176244 __entry->type = sc->sm->sm_type;
177245 __entry->ret_ip = ret_ip;
178246 ),
179
- TP_printk("dev %d:%d ino 0x%llx type %u ret_ip %pS",
247
+ TP_printk("dev %d:%d ino 0x%llx type %s ret_ip %pS",
180248 MAJOR(__entry->dev), MINOR(__entry->dev),
181249 __entry->ino,
182
- __entry->type,
250
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
183251 __entry->ret_ip)
184252 )
185253
....@@ -213,11 +281,11 @@
213281 __entry->offset = offset;
214282 __entry->ret_ip = ret_ip;
215283 ),
216
- TP_printk("dev %d:%d ino 0x%llx fork %d type %u offset %llu ret_ip %pS",
284
+ TP_printk("dev %d:%d ino 0x%llx fork %d type %s offset %llu ret_ip %pS",
217285 MAJOR(__entry->dev), MINOR(__entry->dev),
218286 __entry->ino,
219287 __entry->whichfork,
220
- __entry->type,
288
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
221289 __entry->offset,
222290 __entry->ret_ip)
223291 );
....@@ -244,9 +312,9 @@
244312 __entry->type = sc->sm->sm_type;
245313 __entry->ret_ip = ret_ip;
246314 ),
247
- TP_printk("dev %d:%d type %u ret_ip %pS",
315
+ TP_printk("dev %d:%d type %s ret_ip %pS",
248316 MAJOR(__entry->dev), MINOR(__entry->dev),
249
- __entry->type,
317
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
250318 __entry->ret_ip)
251319 );
252320
....@@ -261,7 +329,7 @@
261329 __field(int, level)
262330 __field(xfs_agnumber_t, agno)
263331 __field(xfs_agblock_t, bno)
264
- __field(int, ptr);
332
+ __field(int, ptr)
265333 __field(int, error)
266334 __field(void *, ret_ip)
267335 ),
....@@ -278,10 +346,10 @@
278346 __entry->error = error;
279347 __entry->ret_ip = ret_ip;
280348 ),
281
- TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
349
+ TP_printk("dev %d:%d type %s btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
282350 MAJOR(__entry->dev), MINOR(__entry->dev),
283
- __entry->type,
284
- __entry->btnum,
351
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
352
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
285353 __entry->level,
286354 __entry->ptr,
287355 __entry->agno,
....@@ -311,7 +379,7 @@
311379 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
312380 __entry->dev = sc->mp->m_super->s_dev;
313381 __entry->ino = sc->ip->i_ino;
314
- __entry->whichfork = cur->bc_private.b.whichfork;
382
+ __entry->whichfork = cur->bc_ino.whichfork;
315383 __entry->type = sc->sm->sm_type;
316384 __entry->btnum = cur->bc_btnum;
317385 __entry->level = level;
....@@ -321,12 +389,12 @@
321389 __entry->error = error;
322390 __entry->ret_ip = ret_ip;
323391 ),
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",
392
+ TP_printk("dev %d:%d ino 0x%llx fork %d type %s btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
325393 MAJOR(__entry->dev), MINOR(__entry->dev),
326394 __entry->ino,
327395 __entry->whichfork,
328
- __entry->type,
329
- __entry->btnum,
396
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
397
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
330398 __entry->level,
331399 __entry->ptr,
332400 __entry->agno,
....@@ -346,7 +414,7 @@
346414 __field(int, level)
347415 __field(xfs_agnumber_t, agno)
348416 __field(xfs_agblock_t, bno)
349
- __field(int, ptr);
417
+ __field(int, ptr)
350418 __field(void *, ret_ip)
351419 ),
352420 TP_fast_assign(
....@@ -360,10 +428,10 @@
360428 __entry->ptr = cur->bc_ptrs[level];
361429 __entry->ret_ip = ret_ip;
362430 ),
363
- TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u ret_ip %pS",
431
+ TP_printk("dev %d:%d type %s btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
364432 MAJOR(__entry->dev), MINOR(__entry->dev),
365
- __entry->type,
366
- __entry->btnum,
433
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
434
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
367435 __entry->level,
368436 __entry->ptr,
369437 __entry->agno,
....@@ -384,14 +452,14 @@
384452 __field(int, level)
385453 __field(xfs_agnumber_t, agno)
386454 __field(xfs_agblock_t, bno)
387
- __field(int, ptr);
455
+ __field(int, ptr)
388456 __field(void *, ret_ip)
389457 ),
390458 TP_fast_assign(
391459 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
392460 __entry->dev = sc->mp->m_super->s_dev;
393461 __entry->ino = sc->ip->i_ino;
394
- __entry->whichfork = cur->bc_private.b.whichfork;
462
+ __entry->whichfork = cur->bc_ino.whichfork;
395463 __entry->type = sc->sm->sm_type;
396464 __entry->btnum = cur->bc_btnum;
397465 __entry->level = level;
....@@ -400,12 +468,12 @@
400468 __entry->ptr = cur->bc_ptrs[level];
401469 __entry->ret_ip = ret_ip;
402470 ),
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",
471
+ TP_printk("dev %d:%d ino 0x%llx fork %d type %s btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
404472 MAJOR(__entry->dev), MINOR(__entry->dev),
405473 __entry->ino,
406474 __entry->whichfork,
407
- __entry->type,
408
- __entry->btnum,
475
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
476
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
409477 __entry->level,
410478 __entry->ptr,
411479 __entry->agno,
....@@ -439,10 +507,10 @@
439507 __entry->nlevels = cur->bc_nlevels;
440508 __entry->ptr = cur->bc_ptrs[level];
441509 ),
442
- TP_printk("dev %d:%d type %u btnum %d agno %u agbno %u level %d nlevels %d ptr %d",
510
+ TP_printk("dev %d:%d type %s btree %s agno %u agbno %u level %d nlevels %d ptr %d",
443511 MAJOR(__entry->dev), MINOR(__entry->dev),
444
- __entry->type,
445
- __entry->btnum,
512
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
513
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
446514 __entry->agno,
447515 __entry->bno,
448516 __entry->level,
....@@ -473,12 +541,115 @@
473541 __entry->error = error;
474542 __entry->ret_ip = ret_ip;
475543 ),
476
- TP_printk("dev %d:%d type %u xref error %d ret_ip %pF",
544
+ TP_printk("dev %d:%d type %s xref error %d ret_ip %pS",
477545 MAJOR(__entry->dev), MINOR(__entry->dev),
478
- __entry->type,
546
+ __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
479547 __entry->error,
480548 __entry->ret_ip)
481549 );
550
+
551
+TRACE_EVENT(xchk_iallocbt_check_cluster,
552
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
553
+ xfs_agino_t startino, xfs_daddr_t map_daddr,
554
+ unsigned short map_len, unsigned int chunk_ino,
555
+ unsigned int nr_inodes, uint16_t cluster_mask,
556
+ uint16_t holemask, unsigned int cluster_ino),
557
+ TP_ARGS(mp, agno, startino, map_daddr, map_len, chunk_ino, nr_inodes,
558
+ cluster_mask, holemask, cluster_ino),
559
+ TP_STRUCT__entry(
560
+ __field(dev_t, dev)
561
+ __field(xfs_agnumber_t, agno)
562
+ __field(xfs_agino_t, startino)
563
+ __field(xfs_daddr_t, map_daddr)
564
+ __field(unsigned short, map_len)
565
+ __field(unsigned int, chunk_ino)
566
+ __field(unsigned int, nr_inodes)
567
+ __field(unsigned int, cluster_ino)
568
+ __field(uint16_t, cluster_mask)
569
+ __field(uint16_t, holemask)
570
+ ),
571
+ TP_fast_assign(
572
+ __entry->dev = mp->m_super->s_dev;
573
+ __entry->agno = agno;
574
+ __entry->startino = startino;
575
+ __entry->map_daddr = map_daddr;
576
+ __entry->map_len = map_len;
577
+ __entry->chunk_ino = chunk_ino;
578
+ __entry->nr_inodes = nr_inodes;
579
+ __entry->cluster_mask = cluster_mask;
580
+ __entry->holemask = holemask;
581
+ __entry->cluster_ino = cluster_ino;
582
+ ),
583
+ TP_printk("dev %d:%d agno %d startino %u daddr 0x%llx len %d chunkino %u nr_inodes %u cluster_mask 0x%x holemask 0x%x cluster_ino %u",
584
+ MAJOR(__entry->dev), MINOR(__entry->dev),
585
+ __entry->agno,
586
+ __entry->startino,
587
+ __entry->map_daddr,
588
+ __entry->map_len,
589
+ __entry->chunk_ino,
590
+ __entry->nr_inodes,
591
+ __entry->cluster_mask,
592
+ __entry->holemask,
593
+ __entry->cluster_ino)
594
+)
595
+
596
+TRACE_EVENT(xchk_fscounters_calc,
597
+ TP_PROTO(struct xfs_mount *mp, uint64_t icount, uint64_t ifree,
598
+ uint64_t fdblocks, uint64_t delalloc),
599
+ TP_ARGS(mp, icount, ifree, fdblocks, delalloc),
600
+ TP_STRUCT__entry(
601
+ __field(dev_t, dev)
602
+ __field(int64_t, icount_sb)
603
+ __field(uint64_t, icount_calculated)
604
+ __field(int64_t, ifree_sb)
605
+ __field(uint64_t, ifree_calculated)
606
+ __field(int64_t, fdblocks_sb)
607
+ __field(uint64_t, fdblocks_calculated)
608
+ __field(uint64_t, delalloc)
609
+ ),
610
+ TP_fast_assign(
611
+ __entry->dev = mp->m_super->s_dev;
612
+ __entry->icount_sb = mp->m_sb.sb_icount;
613
+ __entry->icount_calculated = icount;
614
+ __entry->ifree_sb = mp->m_sb.sb_ifree;
615
+ __entry->ifree_calculated = ifree;
616
+ __entry->fdblocks_sb = mp->m_sb.sb_fdblocks;
617
+ __entry->fdblocks_calculated = fdblocks;
618
+ __entry->delalloc = delalloc;
619
+ ),
620
+ TP_printk("dev %d:%d icount %lld:%llu ifree %lld::%llu fdblocks %lld::%llu delalloc %llu",
621
+ MAJOR(__entry->dev), MINOR(__entry->dev),
622
+ __entry->icount_sb,
623
+ __entry->icount_calculated,
624
+ __entry->ifree_sb,
625
+ __entry->ifree_calculated,
626
+ __entry->fdblocks_sb,
627
+ __entry->fdblocks_calculated,
628
+ __entry->delalloc)
629
+)
630
+
631
+TRACE_EVENT(xchk_fscounters_within_range,
632
+ TP_PROTO(struct xfs_mount *mp, uint64_t expected, int64_t curr_value,
633
+ int64_t old_value),
634
+ TP_ARGS(mp, expected, curr_value, old_value),
635
+ TP_STRUCT__entry(
636
+ __field(dev_t, dev)
637
+ __field(uint64_t, expected)
638
+ __field(int64_t, curr_value)
639
+ __field(int64_t, old_value)
640
+ ),
641
+ TP_fast_assign(
642
+ __entry->dev = mp->m_super->s_dev;
643
+ __entry->expected = expected;
644
+ __entry->curr_value = curr_value;
645
+ __entry->old_value = old_value;
646
+ ),
647
+ TP_printk("dev %d:%d expected %llu curr_value %lld old_value %lld",
648
+ MAJOR(__entry->dev), MINOR(__entry->dev),
649
+ __entry->expected,
650
+ __entry->curr_value,
651
+ __entry->old_value)
652
+)
482653
483654 /* repair tracepoints */
484655 #if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR)
....@@ -598,11 +769,11 @@
598769 __entry->agbno = agbno;
599770 __entry->btnum = btnum;
600771 ),
601
- TP_printk("dev %d:%d agno %u agbno %u btnum %d",
772
+ TP_printk("dev %d:%d agno %u agbno %u btree %s",
602773 MAJOR(__entry->dev), MINOR(__entry->dev),
603774 __entry->agno,
604775 __entry->agbno,
605
- __entry->btnum)
776
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS))
606777 )
607778 TRACE_EVENT(xrep_findroot_block,
608779 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,