xfs: some iget tracing cleanups / fixes
authorChristoph Hellwig <hch@infradead.org>
Thu, 24 Jun 2010 01:50:22 +0000 (11:50 +1000)
committerAlex Elder <aelder@sgi.com>
Mon, 26 Jul 2010 18:16:43 +0000 (13:16 -0500)
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>
fs/xfs/linux-2.6/xfs_trace.h
fs/xfs/xfs_iget.c

index 3f2eec28c70dd7e9daa55648ffbf0ac907e386c2..9efe368d38c7c0609475e9ce5fff259076731527 100644 (file)
@@ -561,8 +561,9 @@ DEFINE_EVENT(xfs_iget_class, name, \
        TP_ARGS(ip))
 DEFINE_IGET_EVENT(xfs_iget_skip);
 DEFINE_IGET_EVENT(xfs_iget_reclaim);
-DEFINE_IGET_EVENT(xfs_iget_found);
-DEFINE_IGET_EVENT(xfs_iget_alloc);
+DEFINE_IGET_EVENT(xfs_iget_reclaim_fail);
+DEFINE_IGET_EVENT(xfs_iget_hit);
+DEFINE_IGET_EVENT(xfs_iget_miss);
 
 DECLARE_EVENT_CLASS(xfs_inode_class,
        TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip),
index 633cb331b9e9bb57303396c56414ad05910ceeaa..75664d1b9f59ba221a322e703ea8c54f6510ba18 100644 (file)
@@ -208,7 +208,7 @@ xfs_iget_cache_hit(
                        ip->i_flags &= ~XFS_INEW;
                        ip->i_flags |= XFS_IRECLAIMABLE;
                        __xfs_inode_set_reclaim_tag(pag, ip);
-                       trace_xfs_iget_reclaim(ip);
+                       trace_xfs_iget_reclaim_fail(ip);
                        goto out_error;
                }
 
@@ -223,6 +223,7 @@ xfs_iget_cache_hit(
        } else {
                /* If the VFS inode is being torn down, pause and try again. */
                if (!igrab(inode)) {
+                       trace_xfs_iget_skip(ip);
                        error = EAGAIN;
                        goto out_error;
                }
@@ -230,6 +231,7 @@ xfs_iget_cache_hit(
                /* We've got a live one. */
                spin_unlock(&ip->i_flags_lock);
                read_unlock(&pag->pag_ici_lock);
+               trace_xfs_iget_hit(ip);
        }
 
        if (lock_flags != 0)
@@ -238,7 +240,6 @@ xfs_iget_cache_hit(
        xfs_iflags_clear(ip, XFS_ISTALE);
        XFS_STATS_INC(xs_ig_found);
 
-       trace_xfs_iget_found(ip);
        return 0;
 
 out_error:
@@ -271,7 +272,7 @@ xfs_iget_cache_miss(
        if (error)
                goto out_destroy;
 
-       xfs_itrace_entry(ip);
+       trace_xfs_iget_miss(ip);
 
        if ((ip->i_d.di_mode == 0) && !(flags & XFS_IGET_CREATE)) {
                error = ENOENT;
@@ -317,7 +318,6 @@ xfs_iget_cache_miss(
        write_unlock(&pag->pag_ici_lock);
        radix_tree_preload_end();
 
-       trace_xfs_iget_alloc(ip);
        *ipp = ip;
        return 0;