|
@@ -283,6 +283,169 @@ TRACE_EVENT(xfs_scrub_incomplete,
|
|
|
__entry->ret_ip)
|
|
|
);
|
|
|
|
|
|
+TRACE_EVENT(xfs_scrub_btree_op_error,
|
|
|
+ TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
|
|
|
+ int level, int error, void *ret_ip),
|
|
|
+ TP_ARGS(sc, cur, level, error, ret_ip),
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(unsigned int, type)
|
|
|
+ __field(xfs_btnum_t, btnum)
|
|
|
+ __field(int, level)
|
|
|
+ __field(xfs_agnumber_t, agno)
|
|
|
+ __field(xfs_agblock_t, bno)
|
|
|
+ __field(int, ptr);
|
|
|
+ __field(int, error)
|
|
|
+ __field(void *, ret_ip)
|
|
|
+ ),
|
|
|
+ TP_fast_assign(
|
|
|
+ xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
|
|
|
+
|
|
|
+ __entry->dev = sc->mp->m_super->s_dev;
|
|
|
+ __entry->type = sc->sm->sm_type;
|
|
|
+ __entry->btnum = cur->bc_btnum;
|
|
|
+ __entry->level = level;
|
|
|
+ __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->ptr = cur->bc_ptrs[level];
|
|
|
+ __entry->error = error;
|
|
|
+ __entry->ret_ip = ret_ip;
|
|
|
+ ),
|
|
|
+ TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u error %d ret_ip %pF",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ __entry->type,
|
|
|
+ __entry->btnum,
|
|
|
+ __entry->level,
|
|
|
+ __entry->ptr,
|
|
|
+ __entry->agno,
|
|
|
+ __entry->bno,
|
|
|
+ __entry->error,
|
|
|
+ __entry->ret_ip)
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(xfs_scrub_ifork_btree_op_error,
|
|
|
+ TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
|
|
|
+ int level, int error, void *ret_ip),
|
|
|
+ TP_ARGS(sc, cur, level, error, ret_ip),
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(xfs_ino_t, ino)
|
|
|
+ __field(int, whichfork)
|
|
|
+ __field(unsigned int, type)
|
|
|
+ __field(xfs_btnum_t, btnum)
|
|
|
+ __field(int, level)
|
|
|
+ __field(int, ptr)
|
|
|
+ __field(xfs_agnumber_t, agno)
|
|
|
+ __field(xfs_agblock_t, bno)
|
|
|
+ __field(int, error)
|
|
|
+ __field(void *, ret_ip)
|
|
|
+ ),
|
|
|
+ TP_fast_assign(
|
|
|
+ xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
|
|
|
+ __entry->dev = sc->mp->m_super->s_dev;
|
|
|
+ __entry->ino = sc->ip->i_ino;
|
|
|
+ __entry->whichfork = cur->bc_private.b.whichfork;
|
|
|
+ __entry->type = sc->sm->sm_type;
|
|
|
+ __entry->btnum = cur->bc_btnum;
|
|
|
+ __entry->level = level;
|
|
|
+ __entry->ptr = cur->bc_ptrs[level];
|
|
|
+ __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->error = error;
|
|
|
+ __entry->ret_ip = ret_ip;
|
|
|
+ ),
|
|
|
+ TP_printk("dev %d:%d ino %llu fork %d type %u btnum %d level %d ptr %d agno %u agbno %u error %d ret_ip %pF",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ __entry->ino,
|
|
|
+ __entry->whichfork,
|
|
|
+ __entry->type,
|
|
|
+ __entry->btnum,
|
|
|
+ __entry->level,
|
|
|
+ __entry->ptr,
|
|
|
+ __entry->agno,
|
|
|
+ __entry->bno,
|
|
|
+ __entry->error,
|
|
|
+ __entry->ret_ip)
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(xfs_scrub_btree_error,
|
|
|
+ TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
|
|
|
+ int level, void *ret_ip),
|
|
|
+ TP_ARGS(sc, cur, level, ret_ip),
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(unsigned int, type)
|
|
|
+ __field(xfs_btnum_t, btnum)
|
|
|
+ __field(int, level)
|
|
|
+ __field(xfs_agnumber_t, agno)
|
|
|
+ __field(xfs_agblock_t, bno)
|
|
|
+ __field(int, ptr);
|
|
|
+ __field(void *, ret_ip)
|
|
|
+ ),
|
|
|
+ TP_fast_assign(
|
|
|
+ xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
|
|
|
+ __entry->dev = sc->mp->m_super->s_dev;
|
|
|
+ __entry->type = sc->sm->sm_type;
|
|
|
+ __entry->btnum = cur->bc_btnum;
|
|
|
+ __entry->level = level;
|
|
|
+ __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->ptr = cur->bc_ptrs[level];
|
|
|
+ __entry->ret_ip = ret_ip;
|
|
|
+ ),
|
|
|
+ TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u ret_ip %pF",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ __entry->type,
|
|
|
+ __entry->btnum,
|
|
|
+ __entry->level,
|
|
|
+ __entry->ptr,
|
|
|
+ __entry->agno,
|
|
|
+ __entry->bno,
|
|
|
+ __entry->ret_ip)
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(xfs_scrub_ifork_btree_error,
|
|
|
+ TP_PROTO(struct xfs_scrub_context *sc, struct xfs_btree_cur *cur,
|
|
|
+ int level, void *ret_ip),
|
|
|
+ TP_ARGS(sc, cur, level, ret_ip),
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(xfs_ino_t, ino)
|
|
|
+ __field(int, whichfork)
|
|
|
+ __field(unsigned int, type)
|
|
|
+ __field(xfs_btnum_t, btnum)
|
|
|
+ __field(int, level)
|
|
|
+ __field(xfs_agnumber_t, agno)
|
|
|
+ __field(xfs_agblock_t, bno)
|
|
|
+ __field(int, ptr);
|
|
|
+ __field(void *, ret_ip)
|
|
|
+ ),
|
|
|
+ TP_fast_assign(
|
|
|
+ xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
|
|
|
+ __entry->dev = sc->mp->m_super->s_dev;
|
|
|
+ __entry->ino = sc->ip->i_ino;
|
|
|
+ __entry->whichfork = cur->bc_private.b.whichfork;
|
|
|
+ __entry->type = sc->sm->sm_type;
|
|
|
+ __entry->btnum = cur->bc_btnum;
|
|
|
+ __entry->level = level;
|
|
|
+ __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
|
|
|
+ __entry->ptr = cur->bc_ptrs[level];
|
|
|
+ __entry->ret_ip = ret_ip;
|
|
|
+ ),
|
|
|
+ TP_printk("dev %d:%d ino %llu fork %d type %u btnum %d level %d ptr %d agno %u agbno %u ret_ip %pF",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ __entry->ino,
|
|
|
+ __entry->whichfork,
|
|
|
+ __entry->type,
|
|
|
+ __entry->btnum,
|
|
|
+ __entry->level,
|
|
|
+ __entry->ptr,
|
|
|
+ __entry->agno,
|
|
|
+ __entry->bno,
|
|
|
+ __entry->ret_ip)
|
|
|
+);
|
|
|
+
|
|
|
#endif /* _TRACE_XFS_SCRUB_TRACE_H */
|
|
|
|
|
|
#undef TRACE_INCLUDE_PATH
|