xfs: some iget tracing cleanups / fixes

The xfs_iget_alloc/found tracepoints are a bit misnamed and misplaced.
Rename them to xfs_iget_hit/xfs_iget_miss and move them to the beggining
of the xfs_iget_cache_hit/miss functions.  Add a new xfs_iget_reclaim_fail
tracepoint for the case where we fail to re-initialize a VFS inode,
and add a second instance of the xfs_iget_skip tracepoint for the case
of a failed igrab() call.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
Christoph Hellwig 2010-06-24 11:50:22 +10:00 committed by Alex Elder
parent 807cbbdb43
commit d2e078c33c
2 changed files with 7 additions and 6 deletions

View File

@ -561,8 +561,9 @@ DEFINE_EVENT(xfs_iget_class, name, \
TP_ARGS(ip)) TP_ARGS(ip))
DEFINE_IGET_EVENT(xfs_iget_skip); DEFINE_IGET_EVENT(xfs_iget_skip);
DEFINE_IGET_EVENT(xfs_iget_reclaim); DEFINE_IGET_EVENT(xfs_iget_reclaim);
DEFINE_IGET_EVENT(xfs_iget_found); DEFINE_IGET_EVENT(xfs_iget_reclaim_fail);
DEFINE_IGET_EVENT(xfs_iget_alloc); DEFINE_IGET_EVENT(xfs_iget_hit);
DEFINE_IGET_EVENT(xfs_iget_miss);
DECLARE_EVENT_CLASS(xfs_inode_class, DECLARE_EVENT_CLASS(xfs_inode_class,
TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip),

View File

@ -208,7 +208,7 @@ xfs_iget_cache_hit(
ip->i_flags &= ~XFS_INEW; ip->i_flags &= ~XFS_INEW;
ip->i_flags |= XFS_IRECLAIMABLE; ip->i_flags |= XFS_IRECLAIMABLE;
__xfs_inode_set_reclaim_tag(pag, ip); __xfs_inode_set_reclaim_tag(pag, ip);
trace_xfs_iget_reclaim(ip); trace_xfs_iget_reclaim_fail(ip);
goto out_error; goto out_error;
} }
@ -223,6 +223,7 @@ xfs_iget_cache_hit(
} else { } else {
/* If the VFS inode is being torn down, pause and try again. */ /* If the VFS inode is being torn down, pause and try again. */
if (!igrab(inode)) { if (!igrab(inode)) {
trace_xfs_iget_skip(ip);
error = EAGAIN; error = EAGAIN;
goto out_error; goto out_error;
} }
@ -230,6 +231,7 @@ xfs_iget_cache_hit(
/* We've got a live one. */ /* We've got a live one. */
spin_unlock(&ip->i_flags_lock); spin_unlock(&ip->i_flags_lock);
read_unlock(&pag->pag_ici_lock); read_unlock(&pag->pag_ici_lock);
trace_xfs_iget_hit(ip);
} }
if (lock_flags != 0) if (lock_flags != 0)
@ -238,7 +240,6 @@ xfs_iget_cache_hit(
xfs_iflags_clear(ip, XFS_ISTALE); xfs_iflags_clear(ip, XFS_ISTALE);
XFS_STATS_INC(xs_ig_found); XFS_STATS_INC(xs_ig_found);
trace_xfs_iget_found(ip);
return 0; return 0;
out_error: out_error:
@ -271,7 +272,7 @@ xfs_iget_cache_miss(
if (error) if (error)
goto out_destroy; goto out_destroy;
xfs_itrace_entry(ip); trace_xfs_iget_miss(ip);
if ((ip->i_d.di_mode == 0) && !(flags & XFS_IGET_CREATE)) { if ((ip->i_d.di_mode == 0) && !(flags & XFS_IGET_CREATE)) {
error = ENOENT; error = ENOENT;
@ -317,7 +318,6 @@ xfs_iget_cache_miss(
write_unlock(&pag->pag_ici_lock); write_unlock(&pag->pag_ici_lock);
radix_tree_preload_end(); radix_tree_preload_end();
trace_xfs_iget_alloc(ip);
*ipp = ip; *ipp = ip;
return 0; return 0;