| .. | .. |
|---|
| 12 | 12 | #include <linux/tracepoint.h> |
|---|
| 13 | 13 | #include "xfs_bit.h" |
|---|
| 14 | 14 | |
|---|
| 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 | + |
|---|
| 15 | 82 | DECLARE_EVENT_CLASS(xchk_class, |
|---|
| 16 | 83 | TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, |
|---|
| 17 | 84 | int error), |
|---|
| .. | .. |
|---|
| 36 | 103 | __entry->flags = sm->sm_flags; |
|---|
| 37 | 104 | __entry->error = error; |
|---|
| 38 | 105 | ), |
|---|
| 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", |
|---|
| 40 | 107 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 41 | 108 | __entry->ino, |
|---|
| 42 | | - __entry->type, |
|---|
| 109 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 43 | 110 | __entry->agno, |
|---|
| 44 | 111 | __entry->inum, |
|---|
| 45 | 112 | __entry->gen, |
|---|
| .. | .. |
|---|
| 78 | 145 | __entry->error = error; |
|---|
| 79 | 146 | __entry->ret_ip = ret_ip; |
|---|
| 80 | 147 | ), |
|---|
| 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", |
|---|
| 82 | 149 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 83 | | - __entry->type, |
|---|
| 150 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 84 | 151 | __entry->agno, |
|---|
| 85 | 152 | __entry->bno, |
|---|
| 86 | 153 | __entry->error, |
|---|
| .. | .. |
|---|
| 109 | 176 | __entry->error = error; |
|---|
| 110 | 177 | __entry->ret_ip = ret_ip; |
|---|
| 111 | 178 | ), |
|---|
| 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", |
|---|
| 113 | 180 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 114 | 181 | __entry->ino, |
|---|
| 115 | 182 | __entry->whichfork, |
|---|
| 116 | | - __entry->type, |
|---|
| 183 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 117 | 184 | __entry->offset, |
|---|
| 118 | 185 | __entry->error, |
|---|
| 119 | 186 | __entry->ret_ip) |
|---|
| .. | .. |
|---|
| 144 | 211 | __entry->bno = bno; |
|---|
| 145 | 212 | __entry->ret_ip = ret_ip; |
|---|
| 146 | 213 | ), |
|---|
| 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", |
|---|
| 148 | 215 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 149 | | - __entry->type, |
|---|
| 216 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 150 | 217 | __entry->agno, |
|---|
| 151 | 218 | __entry->bno, |
|---|
| 152 | 219 | __entry->ret_ip) |
|---|
| .. | .. |
|---|
| 158 | 225 | void *ret_ip), \ |
|---|
| 159 | 226 | TP_ARGS(sc, daddr, ret_ip)) |
|---|
| 160 | 227 | |
|---|
| 228 | +DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_fs_error); |
|---|
| 161 | 229 | DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_error); |
|---|
| 162 | 230 | DEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_preen); |
|---|
| 163 | 231 | |
|---|
| .. | .. |
|---|
| 176 | 244 | __entry->type = sc->sm->sm_type; |
|---|
| 177 | 245 | __entry->ret_ip = ret_ip; |
|---|
| 178 | 246 | ), |
|---|
| 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", |
|---|
| 180 | 248 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 181 | 249 | __entry->ino, |
|---|
| 182 | | - __entry->type, |
|---|
| 250 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 183 | 251 | __entry->ret_ip) |
|---|
| 184 | 252 | ) |
|---|
| 185 | 253 | |
|---|
| .. | .. |
|---|
| 213 | 281 | __entry->offset = offset; |
|---|
| 214 | 282 | __entry->ret_ip = ret_ip; |
|---|
| 215 | 283 | ), |
|---|
| 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", |
|---|
| 217 | 285 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 218 | 286 | __entry->ino, |
|---|
| 219 | 287 | __entry->whichfork, |
|---|
| 220 | | - __entry->type, |
|---|
| 288 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 221 | 289 | __entry->offset, |
|---|
| 222 | 290 | __entry->ret_ip) |
|---|
| 223 | 291 | ); |
|---|
| .. | .. |
|---|
| 244 | 312 | __entry->type = sc->sm->sm_type; |
|---|
| 245 | 313 | __entry->ret_ip = ret_ip; |
|---|
| 246 | 314 | ), |
|---|
| 247 | | - TP_printk("dev %d:%d type %u ret_ip %pS", |
|---|
| 315 | + TP_printk("dev %d:%d type %s ret_ip %pS", |
|---|
| 248 | 316 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 249 | | - __entry->type, |
|---|
| 317 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 250 | 318 | __entry->ret_ip) |
|---|
| 251 | 319 | ); |
|---|
| 252 | 320 | |
|---|
| .. | .. |
|---|
| 261 | 329 | __field(int, level) |
|---|
| 262 | 330 | __field(xfs_agnumber_t, agno) |
|---|
| 263 | 331 | __field(xfs_agblock_t, bno) |
|---|
| 264 | | - __field(int, ptr); |
|---|
| 332 | + __field(int, ptr) |
|---|
| 265 | 333 | __field(int, error) |
|---|
| 266 | 334 | __field(void *, ret_ip) |
|---|
| 267 | 335 | ), |
|---|
| .. | .. |
|---|
| 278 | 346 | __entry->error = error; |
|---|
| 279 | 347 | __entry->ret_ip = ret_ip; |
|---|
| 280 | 348 | ), |
|---|
| 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", |
|---|
| 282 | 350 | 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), |
|---|
| 285 | 353 | __entry->level, |
|---|
| 286 | 354 | __entry->ptr, |
|---|
| 287 | 355 | __entry->agno, |
|---|
| .. | .. |
|---|
| 311 | 379 | xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); |
|---|
| 312 | 380 | __entry->dev = sc->mp->m_super->s_dev; |
|---|
| 313 | 381 | __entry->ino = sc->ip->i_ino; |
|---|
| 314 | | - __entry->whichfork = cur->bc_private.b.whichfork; |
|---|
| 382 | + __entry->whichfork = cur->bc_ino.whichfork; |
|---|
| 315 | 383 | __entry->type = sc->sm->sm_type; |
|---|
| 316 | 384 | __entry->btnum = cur->bc_btnum; |
|---|
| 317 | 385 | __entry->level = level; |
|---|
| .. | .. |
|---|
| 321 | 389 | __entry->error = error; |
|---|
| 322 | 390 | __entry->ret_ip = ret_ip; |
|---|
| 323 | 391 | ), |
|---|
| 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", |
|---|
| 325 | 393 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 326 | 394 | __entry->ino, |
|---|
| 327 | 395 | __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), |
|---|
| 330 | 398 | __entry->level, |
|---|
| 331 | 399 | __entry->ptr, |
|---|
| 332 | 400 | __entry->agno, |
|---|
| .. | .. |
|---|
| 346 | 414 | __field(int, level) |
|---|
| 347 | 415 | __field(xfs_agnumber_t, agno) |
|---|
| 348 | 416 | __field(xfs_agblock_t, bno) |
|---|
| 349 | | - __field(int, ptr); |
|---|
| 417 | + __field(int, ptr) |
|---|
| 350 | 418 | __field(void *, ret_ip) |
|---|
| 351 | 419 | ), |
|---|
| 352 | 420 | TP_fast_assign( |
|---|
| .. | .. |
|---|
| 360 | 428 | __entry->ptr = cur->bc_ptrs[level]; |
|---|
| 361 | 429 | __entry->ret_ip = ret_ip; |
|---|
| 362 | 430 | ), |
|---|
| 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", |
|---|
| 364 | 432 | 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), |
|---|
| 367 | 435 | __entry->level, |
|---|
| 368 | 436 | __entry->ptr, |
|---|
| 369 | 437 | __entry->agno, |
|---|
| .. | .. |
|---|
| 384 | 452 | __field(int, level) |
|---|
| 385 | 453 | __field(xfs_agnumber_t, agno) |
|---|
| 386 | 454 | __field(xfs_agblock_t, bno) |
|---|
| 387 | | - __field(int, ptr); |
|---|
| 455 | + __field(int, ptr) |
|---|
| 388 | 456 | __field(void *, ret_ip) |
|---|
| 389 | 457 | ), |
|---|
| 390 | 458 | TP_fast_assign( |
|---|
| 391 | 459 | xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); |
|---|
| 392 | 460 | __entry->dev = sc->mp->m_super->s_dev; |
|---|
| 393 | 461 | __entry->ino = sc->ip->i_ino; |
|---|
| 394 | | - __entry->whichfork = cur->bc_private.b.whichfork; |
|---|
| 462 | + __entry->whichfork = cur->bc_ino.whichfork; |
|---|
| 395 | 463 | __entry->type = sc->sm->sm_type; |
|---|
| 396 | 464 | __entry->btnum = cur->bc_btnum; |
|---|
| 397 | 465 | __entry->level = level; |
|---|
| .. | .. |
|---|
| 400 | 468 | __entry->ptr = cur->bc_ptrs[level]; |
|---|
| 401 | 469 | __entry->ret_ip = ret_ip; |
|---|
| 402 | 470 | ), |
|---|
| 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", |
|---|
| 404 | 472 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 405 | 473 | __entry->ino, |
|---|
| 406 | 474 | __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), |
|---|
| 409 | 477 | __entry->level, |
|---|
| 410 | 478 | __entry->ptr, |
|---|
| 411 | 479 | __entry->agno, |
|---|
| .. | .. |
|---|
| 439 | 507 | __entry->nlevels = cur->bc_nlevels; |
|---|
| 440 | 508 | __entry->ptr = cur->bc_ptrs[level]; |
|---|
| 441 | 509 | ), |
|---|
| 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", |
|---|
| 443 | 511 | 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), |
|---|
| 446 | 514 | __entry->agno, |
|---|
| 447 | 515 | __entry->bno, |
|---|
| 448 | 516 | __entry->level, |
|---|
| .. | .. |
|---|
| 473 | 541 | __entry->error = error; |
|---|
| 474 | 542 | __entry->ret_ip = ret_ip; |
|---|
| 475 | 543 | ), |
|---|
| 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", |
|---|
| 477 | 545 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 478 | | - __entry->type, |
|---|
| 546 | + __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), |
|---|
| 479 | 547 | __entry->error, |
|---|
| 480 | 548 | __entry->ret_ip) |
|---|
| 481 | 549 | ); |
|---|
| 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 | +) |
|---|
| 482 | 653 | |
|---|
| 483 | 654 | /* repair tracepoints */ |
|---|
| 484 | 655 | #if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) |
|---|
| .. | .. |
|---|
| 598 | 769 | __entry->agbno = agbno; |
|---|
| 599 | 770 | __entry->btnum = btnum; |
|---|
| 600 | 771 | ), |
|---|
| 601 | | - TP_printk("dev %d:%d agno %u agbno %u btnum %d", |
|---|
| 772 | + TP_printk("dev %d:%d agno %u agbno %u btree %s", |
|---|
| 602 | 773 | MAJOR(__entry->dev), MINOR(__entry->dev), |
|---|
| 603 | 774 | __entry->agno, |
|---|
| 604 | 775 | __entry->agbno, |
|---|
| 605 | | - __entry->btnum) |
|---|
| 776 | + __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS)) |
|---|
| 606 | 777 | ) |
|---|
| 607 | 778 | TRACE_EVENT(xrep_findroot_block, |
|---|
| 608 | 779 | TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, |
|---|