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

xfs: report "max_resp" used for min log size computation



Move the tracepoint that computes the size of the transaction used to
compute the minimum log size into xfs_log_get_max_trans_res so that we
only have to compute this stuff once.

Leave xfs_log_get_max_trans_res as a non-static function so that xfs_db
can call it to report the results of the userspace computation of the
same value to diagnose mkfs/kernel misinteractions.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 52d8ea4f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ xfs_log_get_max_trans_res(
		*max_resp = resv.tr_attrsetm;	/* struct copy */
		max_resp->tr_logres = attr_space;
	}
	trace_xfs_log_get_max_trans_res(mp, max_resp);
}

/*
+19 −0
Original line number Diff line number Diff line
@@ -3534,6 +3534,25 @@ DEFINE_EVENT(xfs_trans_resv_class, name, \
DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc);
DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc_minlogsize);

TRACE_EVENT(xfs_log_get_max_trans_res,
	TP_PROTO(struct xfs_mount *mp, const struct xfs_trans_res *res),
	TP_ARGS(mp, res),
	TP_STRUCT__entry(
		__field(dev_t, dev)
		__field(uint, logres)
		__field(int, logcount)
	),
	TP_fast_assign(
		__entry->dev = mp->m_super->s_dev;
		__entry->logres = res->tr_logres;
		__entry->logcount = res->tr_logcount;
	),
	TP_printk("dev %d:%d logres %u logcount %d",
		  MAJOR(__entry->dev), MINOR(__entry->dev),
		  __entry->logres,
		  __entry->logcount)
);

DECLARE_EVENT_CLASS(xfs_trans_class,
	TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip),
	TP_ARGS(tp, caller_ip),
+0 −3
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ static void
xfs_trans_trace_reservations(
	struct xfs_mount	*mp)
{
	struct xfs_trans_res	resv;
	struct xfs_trans_res	*res;
	struct xfs_trans_res	*end_res;
	int			i;
@@ -41,8 +40,6 @@ xfs_trans_trace_reservations(
	end_res = (struct xfs_trans_res *)(M_RES(mp) + 1);
	for (i = 0; res < end_res; i++, res++)
		trace_xfs_trans_resv_calc(mp, i, res);
	xfs_log_get_max_trans_res(mp, &resv);
	trace_xfs_trans_resv_calc(mp, -1, &resv);
}
#else
# define xfs_trans_trace_reservations(mp)