Commit 4664c66c authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

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: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
parent b1d2a068
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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)
+25 −0
Original line number Diff line number Diff line
@@ -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