Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2e078c3 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Alex Elder
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent 807cbbdb
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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),
+4 −4
Original line number Diff line number Diff line
@@ -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;