Commit fbe8c7e1 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: clean up rmap log intent item tracepoint callsites



Pass the incore rmap structure to the tracepoints instead of open-coding
the argument passing.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 47492ed1
Loading
Loading
Loading
Loading
+5 −17
Original line number Diff line number Diff line
@@ -2585,20 +2585,15 @@ xfs_rmap_finish_one(
	struct xfs_rmap_intent		*ri,
	struct xfs_btree_cur		**pcur)
{
	struct xfs_owner_info		oinfo;
	struct xfs_mount		*mp = tp->t_mountp;
	struct xfs_btree_cur		*rcur;
	struct xfs_buf			*agbp = NULL;
	int				error = 0;
	struct xfs_owner_info		oinfo;
	xfs_agblock_t			bno;
	bool				unwritten;
	int				error = 0;

	bno = XFS_FSB_TO_AGBNO(mp, ri->ri_bmap.br_startblock);

	trace_xfs_rmap_deferred(mp, ri->ri_pag->pag_agno, ri->ri_type, bno,
			ri->ri_owner, ri->ri_whichfork,
			ri->ri_bmap.br_startoff, ri->ri_bmap.br_blockcount,
			ri->ri_bmap.br_state);
	trace_xfs_rmap_deferred(mp, ri);

	if (XFS_TEST_ERROR(false, mp, XFS_ERRTAG_RMAP_FINISH_ONE))
		return -EIO;
@@ -2673,15 +2668,6 @@ __xfs_rmap_add(
{
	struct xfs_rmap_intent		*ri;

	trace_xfs_rmap_defer(tp->t_mountp,
			XFS_FSB_TO_AGNO(tp->t_mountp, bmap->br_startblock),
			type,
			XFS_FSB_TO_AGBNO(tp->t_mountp, bmap->br_startblock),
			owner, whichfork,
			bmap->br_startoff,
			bmap->br_blockcount,
			bmap->br_state);

	ri = kmem_cache_alloc(xfs_rmap_intent_cache, GFP_KERNEL | __GFP_NOFAIL);
	INIT_LIST_HEAD(&ri->ri_list);
	ri->ri_type = type;
@@ -2689,6 +2675,8 @@ __xfs_rmap_add(
	ri->ri_whichfork = whichfork;
	ri->ri_bmap = *bmap;

	trace_xfs_rmap_defer(tp->t_mountp, ri);

	xfs_rmap_update_get_group(tp->t_mountp, ri);
	xfs_defer_add(tp, &ri->ri_list, &xfs_rmap_update_defer_type);
}
+10 −0
Original line number Diff line number Diff line
@@ -157,6 +157,16 @@ enum xfs_rmap_intent_type {
	XFS_RMAP_FREE,
};

#define XFS_RMAP_INTENT_STRINGS \
	{ XFS_RMAP_MAP,			"map" }, \
	{ XFS_RMAP_MAP_SHARED,		"map_shared" }, \
	{ XFS_RMAP_UNMAP,		"unmap" }, \
	{ XFS_RMAP_UNMAP_SHARED,	"unmap_shared" }, \
	{ XFS_RMAP_CONVERT,		"cvt" }, \
	{ XFS_RMAP_CONVERT_SHARED,	"cvt_shared" }, \
	{ XFS_RMAP_ALLOC,		"alloc" }, \
	{ XFS_RMAP_FREE,		"free" }

struct xfs_rmap_intent {
	struct list_head			ri_list;
	enum xfs_rmap_intent_type		ri_type;
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@
#include "xfs_exchmaps.h"
#include "xfs_exchrange.h"
#include "xfs_parent.h"
#include "xfs_rmap.h"

/*
 * We include this last to have the helpers above available for the trace
+28 −31
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ struct xfs_getparents;
struct xfs_parent_irec;
struct xfs_attrlist_cursor_kern;
struct xfs_extent_free_item;
struct xfs_rmap_intent;

#define XFS_ATTR_FILTER_FLAGS \
	{ XFS_ATTR_ROOT,	"ROOT" }, \
@@ -2958,20 +2959,22 @@ DEFINE_EVENT(xfs_rmapbt_class, name, \
		 uint64_t owner, uint64_t offset, unsigned int flags), \
	TP_ARGS(cur, agbno, len, owner, offset, flags))

TRACE_DEFINE_ENUM(XFS_RMAP_MAP);
TRACE_DEFINE_ENUM(XFS_RMAP_MAP_SHARED);
TRACE_DEFINE_ENUM(XFS_RMAP_UNMAP);
TRACE_DEFINE_ENUM(XFS_RMAP_UNMAP_SHARED);
TRACE_DEFINE_ENUM(XFS_RMAP_CONVERT);
TRACE_DEFINE_ENUM(XFS_RMAP_CONVERT_SHARED);
TRACE_DEFINE_ENUM(XFS_RMAP_ALLOC);
TRACE_DEFINE_ENUM(XFS_RMAP_FREE);

DECLARE_EVENT_CLASS(xfs_rmap_deferred_class,
	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
		 int op,
		 xfs_agblock_t agbno,
		 xfs_ino_t ino,
		 int whichfork,
		 xfs_fileoff_t offset,
		 xfs_filblks_t len,
		 xfs_exntst_t state),
	TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state),
	TP_PROTO(struct xfs_mount *mp, struct xfs_rmap_intent *ri),
	TP_ARGS(mp, ri),
	TP_STRUCT__entry(
		__field(dev_t, dev)
		__field(unsigned long long, owner)
		__field(xfs_agnumber_t, agno)
		__field(xfs_ino_t, ino)
		__field(xfs_agblock_t, agbno)
		__field(int, whichfork)
		__field(xfs_fileoff_t, l_loff)
@@ -2981,21 +2984,22 @@ DECLARE_EVENT_CLASS(xfs_rmap_deferred_class,
	),
	TP_fast_assign(
		__entry->dev = mp->m_super->s_dev;
		__entry->agno = agno;
		__entry->ino = ino;
		__entry->agbno = agbno;
		__entry->whichfork = whichfork;
		__entry->l_loff = offset;
		__entry->l_len = len;
		__entry->l_state = state;
		__entry->op = op;
	),
	TP_printk("dev %d:%d op %d agno 0x%x agbno 0x%x owner 0x%llx %s fileoff 0x%llx fsbcount 0x%llx state %d",
		__entry->agno = XFS_FSB_TO_AGNO(mp, ri->ri_bmap.br_startblock);
		__entry->agbno = XFS_FSB_TO_AGBNO(mp,
					ri->ri_bmap.br_startblock);
		__entry->owner = ri->ri_owner;
		__entry->whichfork = ri->ri_whichfork;
		__entry->l_loff = ri->ri_bmap.br_startoff;
		__entry->l_len = ri->ri_bmap.br_blockcount;
		__entry->l_state = ri->ri_bmap.br_state;
		__entry->op = ri->ri_type;
	),
	TP_printk("dev %d:%d op %s agno 0x%x agbno 0x%x owner 0x%llx %s fileoff 0x%llx fsbcount 0x%llx state %d",
		  MAJOR(__entry->dev), MINOR(__entry->dev),
		  __entry->op,
		  __print_symbolic(__entry->op, XFS_RMAP_INTENT_STRINGS),
		  __entry->agno,
		  __entry->agbno,
		  __entry->ino,
		  __entry->owner,
		  __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS),
		  __entry->l_loff,
		  __entry->l_len,
@@ -3003,15 +3007,8 @@ DECLARE_EVENT_CLASS(xfs_rmap_deferred_class,
);
#define DEFINE_RMAP_DEFERRED_EVENT(name) \
DEFINE_EVENT(xfs_rmap_deferred_class, name, \
	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
		 int op, \
		 xfs_agblock_t agbno, \
		 xfs_ino_t ino, \
		 int whichfork, \
		 xfs_fileoff_t offset, \
		 xfs_filblks_t len, \
		 xfs_exntst_t state), \
	TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state))
	TP_PROTO(struct xfs_mount *mp, struct xfs_rmap_intent *ri), \
	TP_ARGS(mp, ri))
DEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_defer);
DEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_deferred);