mirror of https://gitee.com/openkylin/linux.git
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:
parent
807cbbdb43
commit
d2e078c33c
|
@ -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),
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue