diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2019-02-07 10:37:16 -0800 |
---|---|---|
committer | Darrick J. Wong <darrick.wong@oracle.com> | 2019-02-11 16:07:01 -0800 |
commit | 4664c66c91a14019551b9ba8b2998fa3b5f69499 (patch) | |
tree | 93877aa445bf0b034392dc0fc8fc888105f706f6 /fs/xfs | |
parent | b1d2a068ea631891ae7a0b19c37ff8a5bf0f6af4 (diff) |
xfs: add tracepoints for high level iunlink operations
Add tracepoints so we can associate high level operations with low level
updates. No functional changes.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_inode.c | 3 | ||||
-rw-r--r-- | fs/xfs/xfs_trace.h | 25 |
2 files changed, 28 insertions, 0 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 282316bcce39..206bb004c4f2 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2047,6 +2047,7 @@ xfs_iunlink( int error; ASSERT(VFS_I(ip)->i_mode != 0); + trace_xfs_iunlink(ip); /* Get the agi buffer first. It ensures lock ordering on the list. */ error = xfs_read_agi(mp, tp, agno, &agibp); @@ -2193,6 +2194,8 @@ xfs_iunlink_remove( short bucket_index = agino % XFS_AGI_UNLINKED_BUCKETS; int error; + trace_xfs_iunlink_remove(ip); + /* Get the agi buffer first. It ensures lock ordering on the list. */ error = xfs_read_agi(mp, tp, agno, &agibp); if (error) diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index fbec8f0e1a9a..a6e384a642b1 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -3423,6 +3423,31 @@ TRACE_EVENT(xfs_iunlink_update_dinode, __entry->new_ptr) ); +DECLARE_EVENT_CLASS(xfs_ag_inode_class, + TP_PROTO(struct xfs_inode *ip), + TP_ARGS(ip), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(xfs_agnumber_t, agno) + __field(xfs_agino_t, agino) + ), + TP_fast_assign( + __entry->dev = VFS_I(ip)->i_sb->s_dev; + __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); + __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); + ), + TP_printk("dev %d:%d agno %u agino %u", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->agno, __entry->agino) +) + +#define DEFINE_AGINODE_EVENT(name) \ +DEFINE_EVENT(xfs_ag_inode_class, name, \ + TP_PROTO(struct xfs_inode *ip), \ + TP_ARGS(ip)) +DEFINE_AGINODE_EVENT(xfs_iunlink); +DEFINE_AGINODE_EVENT(xfs_iunlink_remove); + #endif /* _TRACE_XFS_H */ #undef TRACE_INCLUDE_PATH |