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: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
52d8ea4f24
commit
918247ce54
|
@ -76,6 +76,7 @@ xfs_log_get_max_trans_res(
|
||||||
*max_resp = resv.tr_attrsetm; /* struct copy */
|
*max_resp = resv.tr_attrsetm; /* struct copy */
|
||||||
max_resp->tr_logres = attr_space;
|
max_resp->tr_logres = attr_space;
|
||||||
}
|
}
|
||||||
|
trace_xfs_log_get_max_trans_res(mp, max_resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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);
|
||||||
DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc_minlogsize);
|
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,
|
DECLARE_EVENT_CLASS(xfs_trans_class,
|
||||||
TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip),
|
TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip),
|
||||||
TP_ARGS(tp, caller_ip),
|
TP_ARGS(tp, caller_ip),
|
||||||
|
|
|
@ -32,7 +32,6 @@ static void
|
||||||
xfs_trans_trace_reservations(
|
xfs_trans_trace_reservations(
|
||||||
struct xfs_mount *mp)
|
struct xfs_mount *mp)
|
||||||
{
|
{
|
||||||
struct xfs_trans_res resv;
|
|
||||||
struct xfs_trans_res *res;
|
struct xfs_trans_res *res;
|
||||||
struct xfs_trans_res *end_res;
|
struct xfs_trans_res *end_res;
|
||||||
int i;
|
int i;
|
||||||
|
@ -41,8 +40,6 @@ xfs_trans_trace_reservations(
|
||||||
end_res = (struct xfs_trans_res *)(M_RES(mp) + 1);
|
end_res = (struct xfs_trans_res *)(M_RES(mp) + 1);
|
||||||
for (i = 0; res < end_res; i++, res++)
|
for (i = 0; res < end_res; i++, res++)
|
||||||
trace_xfs_trans_resv_calc(mp, 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
|
#else
|
||||||
# define xfs_trans_trace_reservations(mp)
|
# define xfs_trans_trace_reservations(mp)
|
||||||
|
|
Loading…
Reference in New Issue