Commit c494213f authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: stringify btree cursor types in ftrace output

Use __print_symbolic to print the btree type in ftrace output.
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarEric Sandeen <sandeen@redhat.com>
parent 0357d21a
...@@ -113,11 +113,24 @@ typedef enum { ...@@ -113,11 +113,24 @@ typedef enum {
{ XFS_LOOKUP_LEi, "le" }, \ { XFS_LOOKUP_LEi, "le" }, \
{ XFS_LOOKUP_GEi, "ge" } { XFS_LOOKUP_GEi, "ge" }
/*
* This enum is used in string mapping in xfs_trace.h; please keep the
* TRACE_DEFINE_ENUMs for it up to date.
*/
typedef enum { typedef enum {
XFS_BTNUM_BNOi, XFS_BTNUM_CNTi, XFS_BTNUM_RMAPi, XFS_BTNUM_BMAPi, XFS_BTNUM_BNOi, XFS_BTNUM_CNTi, XFS_BTNUM_RMAPi, XFS_BTNUM_BMAPi,
XFS_BTNUM_INOi, XFS_BTNUM_FINOi, XFS_BTNUM_REFCi, XFS_BTNUM_MAX XFS_BTNUM_INOi, XFS_BTNUM_FINOi, XFS_BTNUM_REFCi, XFS_BTNUM_MAX
} xfs_btnum_t; } xfs_btnum_t;
#define XFS_BTNUM_STRINGS \
{ XFS_BTNUM_BNOi, "bnobt" }, \
{ XFS_BTNUM_CNTi, "cntbt" }, \
{ XFS_BTNUM_RMAPi, "rmapbt" }, \
{ XFS_BTNUM_BMAPi, "bmbt" }, \
{ XFS_BTNUM_INOi, "inobt" }, \
{ XFS_BTNUM_FINOi, "finobt" }, \
{ XFS_BTNUM_REFCi, "refcbt" }
struct xfs_name { struct xfs_name {
const unsigned char *name; const unsigned char *name;
int len; int len;
......
...@@ -12,6 +12,20 @@ ...@@ -12,6 +12,20 @@
#include <linux/tracepoint.h> #include <linux/tracepoint.h>
#include "xfs_bit.h" #include "xfs_bit.h"
/*
* ftrace's __print_symbolic requires that all enum values be wrapped in the
* TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
* ring buffer. Somehow this was only worth mentioning in the ftrace sample
* code.
*/
TRACE_DEFINE_ENUM(XFS_BTNUM_BNOi);
TRACE_DEFINE_ENUM(XFS_BTNUM_CNTi);
TRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi);
TRACE_DEFINE_ENUM(XFS_BTNUM_INOi);
TRACE_DEFINE_ENUM(XFS_BTNUM_FINOi);
TRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi);
TRACE_DEFINE_ENUM(XFS_BTNUM_REFCi);
DECLARE_EVENT_CLASS(xchk_class, DECLARE_EVENT_CLASS(xchk_class,
TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm,
int error), int error),
...@@ -278,10 +292,10 @@ TRACE_EVENT(xchk_btree_op_error, ...@@ -278,10 +292,10 @@ TRACE_EVENT(xchk_btree_op_error,
__entry->error = error; __entry->error = error;
__entry->ret_ip = ret_ip; __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 %pS", TP_printk("dev %d:%d type %u btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->type, __entry->type,
__entry->btnum, __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
__entry->level, __entry->level,
__entry->ptr, __entry->ptr,
__entry->agno, __entry->agno,
...@@ -321,12 +335,12 @@ TRACE_EVENT(xchk_ifork_btree_op_error, ...@@ -321,12 +335,12 @@ TRACE_EVENT(xchk_ifork_btree_op_error,
__entry->error = error; __entry->error = error;
__entry->ret_ip = ret_ip; __entry->ret_ip = ret_ip;
), ),
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", 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",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->ino, __entry->ino,
__entry->whichfork, __entry->whichfork,
__entry->type, __entry->type,
__entry->btnum, __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
__entry->level, __entry->level,
__entry->ptr, __entry->ptr,
__entry->agno, __entry->agno,
...@@ -360,10 +374,10 @@ TRACE_EVENT(xchk_btree_error, ...@@ -360,10 +374,10 @@ TRACE_EVENT(xchk_btree_error,
__entry->ptr = cur->bc_ptrs[level]; __entry->ptr = cur->bc_ptrs[level];
__entry->ret_ip = ret_ip; __entry->ret_ip = ret_ip;
), ),
TP_printk("dev %d:%d type %u btnum %d level %d ptr %d agno %u agbno %u ret_ip %pS", TP_printk("dev %d:%d type %u btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->type, __entry->type,
__entry->btnum, __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
__entry->level, __entry->level,
__entry->ptr, __entry->ptr,
__entry->agno, __entry->agno,
...@@ -400,12 +414,12 @@ TRACE_EVENT(xchk_ifork_btree_error, ...@@ -400,12 +414,12 @@ TRACE_EVENT(xchk_ifork_btree_error,
__entry->ptr = cur->bc_ptrs[level]; __entry->ptr = cur->bc_ptrs[level];
__entry->ret_ip = ret_ip; __entry->ret_ip = ret_ip;
), ),
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", 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",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->ino, __entry->ino,
__entry->whichfork, __entry->whichfork,
__entry->type, __entry->type,
__entry->btnum, __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
__entry->level, __entry->level,
__entry->ptr, __entry->ptr,
__entry->agno, __entry->agno,
...@@ -439,10 +453,10 @@ DECLARE_EVENT_CLASS(xchk_sbtree_class, ...@@ -439,10 +453,10 @@ DECLARE_EVENT_CLASS(xchk_sbtree_class,
__entry->nlevels = cur->bc_nlevels; __entry->nlevels = cur->bc_nlevels;
__entry->ptr = cur->bc_ptrs[level]; __entry->ptr = cur->bc_ptrs[level];
), ),
TP_printk("dev %d:%d type %u btnum %d agno %u agbno %u level %d nlevels %d ptr %d", TP_printk("dev %d:%d type %u btree %s agno %u agbno %u level %d nlevels %d ptr %d",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->type, __entry->type,
__entry->btnum, __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
__entry->agno, __entry->agno,
__entry->bno, __entry->bno,
__entry->level, __entry->level,
...@@ -598,11 +612,11 @@ TRACE_EVENT(xrep_init_btblock, ...@@ -598,11 +612,11 @@ TRACE_EVENT(xrep_init_btblock,
__entry->agbno = agbno; __entry->agbno = agbno;
__entry->btnum = btnum; __entry->btnum = btnum;
), ),
TP_printk("dev %d:%d agno %u agbno %u btnum %d", TP_printk("dev %d:%d agno %u agbno %u btree %s",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno, __entry->agno,
__entry->agbno, __entry->agbno,
__entry->btnum) __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS))
) )
TRACE_EVENT(xrep_findroot_block, TRACE_EVENT(xrep_findroot_block,
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
......
...@@ -2194,6 +2194,14 @@ DEFINE_DISCARD_EVENT(xfs_discard_exclude); ...@@ -2194,6 +2194,14 @@ DEFINE_DISCARD_EVENT(xfs_discard_exclude);
DEFINE_DISCARD_EVENT(xfs_discard_busy); DEFINE_DISCARD_EVENT(xfs_discard_busy);
/* btree cursor events */ /* btree cursor events */
TRACE_DEFINE_ENUM(XFS_BTNUM_BNOi);
TRACE_DEFINE_ENUM(XFS_BTNUM_CNTi);
TRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi);
TRACE_DEFINE_ENUM(XFS_BTNUM_INOi);
TRACE_DEFINE_ENUM(XFS_BTNUM_FINOi);
TRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi);
TRACE_DEFINE_ENUM(XFS_BTNUM_REFCi);
DECLARE_EVENT_CLASS(xfs_btree_cur_class, DECLARE_EVENT_CLASS(xfs_btree_cur_class,
TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp),
TP_ARGS(cur, level, bp), TP_ARGS(cur, level, bp),
...@@ -2213,9 +2221,9 @@ DECLARE_EVENT_CLASS(xfs_btree_cur_class, ...@@ -2213,9 +2221,9 @@ DECLARE_EVENT_CLASS(xfs_btree_cur_class,
__entry->ptr = cur->bc_ptrs[level]; __entry->ptr = cur->bc_ptrs[level];
__entry->daddr = bp ? bp->b_bn : -1; __entry->daddr = bp ? bp->b_bn : -1;
), ),
TP_printk("dev %d:%d btnum %d level %d/%d ptr %d daddr 0x%llx", TP_printk("dev %d:%d btree %s level %d/%d ptr %d daddr 0x%llx",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->btnum, __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
__entry->level, __entry->level,
__entry->nlevels, __entry->nlevels,
__entry->ptr, __entry->ptr,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment