From e8e0e170e2e17b601b86edb86f58dbf7c599e4b3 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 19 Oct 2017 11:06:29 -0700 Subject: [PATCH] xfs: remove XFS_BMAP_TRACE_EXLIST Instead of looping over all extents in some debug-only helper just insert trace points into the loops that already exist in the calling functions. Also split the xfs_extlist trace point into one each for reading and writing extents from disk. Signed-off-by: Christoph Hellwig Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_bmap.c | 23 ++--------------------- fs/xfs/libxfs/xfs_bmap.h | 9 --------- fs/xfs/libxfs/xfs_inode_fork.c | 8 ++++++-- fs/xfs/xfs_trace.h | 3 ++- 4 files changed, 10 insertions(+), 33 deletions(-) diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index c2d6f2b4112a..30e5a358dd90 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -487,26 +487,6 @@ error_norelse: return; } -/* - * Add bmap trace insert entries for all the contents of the extent records. - */ -void -xfs_bmap_trace_exlist( - xfs_inode_t *ip, /* incore inode pointer */ - xfs_extnum_t cnt, /* count of entries in the list */ - int whichfork, /* data or attr or cow fork */ - unsigned long caller_ip) -{ - xfs_extnum_t idx; /* extent record index */ - xfs_ifork_t *ifp; /* inode fork pointer */ - int state = xfs_bmap_fork_to_state(whichfork); - - ifp = XFS_IFORK_PTR(ip, whichfork); - ASSERT(cnt == xfs_iext_count(ifp)); - for (idx = 0; idx < cnt; idx++) - trace_xfs_extlist(ip, idx, state, caller_ip); -} - /* * Validate that the bmbt_irecs being returned from bmapi are valid * given the caller's original parameters. Specifically check the @@ -1210,6 +1190,7 @@ xfs_bmap_read_extents( __be64 *pp; /* pointer to block address */ /* REFERENCED */ xfs_extnum_t room; /* number of entries there's room for */ + int state = xfs_bmap_fork_to_state(whichfork); mp = ip->i_mount; ifp = XFS_IFORK_PTR(ip, whichfork); @@ -1283,6 +1264,7 @@ xfs_bmap_read_extents( XFS_ERRLEVEL_LOW, mp); goto error0; } + trace_xfs_read_extent(ip, i, state, _THIS_IP_); } xfs_trans_brelse(tp, bp); bno = nextbno; @@ -1300,7 +1282,6 @@ xfs_bmap_read_extents( if (i != XFS_IFORK_NEXTENTS(ip, whichfork)) return -EFSCORRUPTED; ASSERT(i == xfs_iext_count(ifp)); - XFS_BMAP_TRACE_EXLIST(ip, i, whichfork); return 0; error0: xfs_trans_brelse(tp, bp); diff --git a/fs/xfs/libxfs/xfs_bmap.h b/fs/xfs/libxfs/xfs_bmap.h index 612d3c778691..50b8977163ec 100644 --- a/fs/xfs/libxfs/xfs_bmap.h +++ b/fs/xfs/libxfs/xfs_bmap.h @@ -197,15 +197,6 @@ enum shift_direction { SHIFT_RIGHT, }; -#ifdef DEBUG -void xfs_bmap_trace_exlist(struct xfs_inode *ip, xfs_extnum_t cnt, - int whichfork, unsigned long caller_ip); -#define XFS_BMAP_TRACE_EXLIST(ip,c,w) \ - xfs_bmap_trace_exlist(ip,c,w, _THIS_IP_) -#else -#define XFS_BMAP_TRACE_EXLIST(ip,c,w) -#endif - void xfs_trim_extent(struct xfs_bmbt_irec *irec, xfs_fileoff_t bno, xfs_filblks_t len); void xfs_trim_extent_eof(struct xfs_bmbt_irec *, struct xfs_inode *); diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c index 7f40f53e6c43..31786bad9738 100644 --- a/fs/xfs/libxfs/xfs_inode_fork.c +++ b/fs/xfs/libxfs/xfs_inode_fork.c @@ -336,6 +336,7 @@ xfs_iformat_extents( { struct xfs_mount *mp = ip->i_mount; struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, whichfork); + int state = xfs_bmap_fork_to_state(whichfork); int nex = XFS_DFORK_NEXTENTS(dip, whichfork); int size = nex * sizeof(xfs_bmbt_rec_t); struct xfs_bmbt_rec *dp; @@ -373,8 +374,8 @@ xfs_iformat_extents( XFS_ERRLEVEL_LOW, mp); return -EFSCORRUPTED; } + trace_xfs_read_extent(ip, i, state, _THIS_IP_); } - XFS_BMAP_TRACE_EXLIST(ip, nex, whichfork); } ifp->if_flags |= XFS_IFEXTENTS; return 0; @@ -772,6 +773,7 @@ xfs_iextents_copy( xfs_bmbt_rec_t *dp, int whichfork) { + int state = xfs_bmap_fork_to_state(whichfork); int copied; int i; xfs_ifork_t *ifp; @@ -783,7 +785,6 @@ xfs_iextents_copy( ASSERT(ifp->if_bytes > 0); nrecs = xfs_iext_count(ifp); - XFS_BMAP_TRACE_EXLIST(ip, nrecs, whichfork); ASSERT(nrecs > 0); /* @@ -806,9 +807,12 @@ xfs_iextents_copy( continue; } + trace_xfs_write_extent(ip, i, state, _RET_IP_); + /* Translate to on disk format */ put_unaligned_be64(ep->l0, &dp->l0); put_unaligned_be64(ep->l1, &dp->l1); + dp++; copied++; } diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index 0a8999a310b9..665ef6cca90c 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -309,7 +309,8 @@ DEFINE_EVENT(xfs_bmap_class, name, \ DEFINE_BMAP_EVENT(xfs_iext_remove); DEFINE_BMAP_EVENT(xfs_bmap_pre_update); DEFINE_BMAP_EVENT(xfs_bmap_post_update); -DEFINE_BMAP_EVENT(xfs_extlist); +DEFINE_BMAP_EVENT(xfs_read_extent); +DEFINE_BMAP_EVENT(xfs_write_extent); DECLARE_EVENT_CLASS(xfs_buf_class, TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip),