mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 20:22:13 +08:00
xfs: pass btree cursors to refcount btree tracepoints
Prepare the rest of refcount btree tracepoints for use with realtime reflink by making them take the btree cursor object as a parameter. This will save us a lot of trouble later on. Remove the xfs_refcount_recover_extent tracepoint since it's already covered by other refcount tracepoints. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
bb0efb0d0a
commit
8fbac2f1a0
@ -183,7 +183,7 @@ xfs_refcount_get_rec(
|
||||
if (fa)
|
||||
return xfs_refcount_complain_bad_rec(cur, fa, irec);
|
||||
|
||||
trace_xfs_refcount_get(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
|
||||
trace_xfs_refcount_get(cur, irec);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@ xfs_refcount_update(
|
||||
uint32_t start;
|
||||
int error;
|
||||
|
||||
trace_xfs_refcount_update(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
|
||||
trace_xfs_refcount_update(cur, irec);
|
||||
|
||||
start = xfs_refcount_encode_startblock(irec->rc_startblock,
|
||||
irec->rc_domain);
|
||||
@ -228,7 +228,7 @@ xfs_refcount_insert(
|
||||
{
|
||||
int error;
|
||||
|
||||
trace_xfs_refcount_insert(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
|
||||
trace_xfs_refcount_insert(cur, irec);
|
||||
|
||||
cur->bc_rec.rc.rc_startblock = irec->rc_startblock;
|
||||
cur->bc_rec.rc.rc_blockcount = irec->rc_blockcount;
|
||||
@ -273,7 +273,7 @@ xfs_refcount_delete(
|
||||
error = -EFSCORRUPTED;
|
||||
goto out_error;
|
||||
}
|
||||
trace_xfs_refcount_delete(cur->bc_mp, cur->bc_ag.pag->pag_agno, &irec);
|
||||
trace_xfs_refcount_delete(cur, &irec);
|
||||
error = xfs_btree_delete(cur, i);
|
||||
if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) {
|
||||
xfs_btree_mark_sick(cur);
|
||||
@ -410,8 +410,7 @@ xfs_refcount_split_extent(
|
||||
return 0;
|
||||
|
||||
*shape_changed = true;
|
||||
trace_xfs_refcount_split_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
|
||||
&rcext, agbno);
|
||||
trace_xfs_refcount_split_extent(cur, &rcext, agbno);
|
||||
|
||||
/* Establish the right extent. */
|
||||
tmp = rcext;
|
||||
@ -454,8 +453,7 @@ xfs_refcount_merge_center_extents(
|
||||
int error;
|
||||
int found_rec;
|
||||
|
||||
trace_xfs_refcount_merge_center_extents(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, left, center, right);
|
||||
trace_xfs_refcount_merge_center_extents(cur, left, center, right);
|
||||
|
||||
ASSERT(left->rc_domain == center->rc_domain);
|
||||
ASSERT(right->rc_domain == center->rc_domain);
|
||||
@ -536,8 +534,7 @@ xfs_refcount_merge_left_extent(
|
||||
int error;
|
||||
int found_rec;
|
||||
|
||||
trace_xfs_refcount_merge_left_extent(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, left, cleft);
|
||||
trace_xfs_refcount_merge_left_extent(cur, left, cleft);
|
||||
|
||||
ASSERT(left->rc_domain == cleft->rc_domain);
|
||||
|
||||
@ -601,8 +598,7 @@ xfs_refcount_merge_right_extent(
|
||||
int error;
|
||||
int found_rec;
|
||||
|
||||
trace_xfs_refcount_merge_right_extent(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, cright, right);
|
||||
trace_xfs_refcount_merge_right_extent(cur, cright, right);
|
||||
|
||||
ASSERT(right->rc_domain == cright->rc_domain);
|
||||
|
||||
@ -741,8 +737,7 @@ not_found:
|
||||
cleft->rc_refcount = 1;
|
||||
cleft->rc_domain = domain;
|
||||
}
|
||||
trace_xfs_refcount_find_left_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
|
||||
left, cleft, agbno);
|
||||
trace_xfs_refcount_find_left_extent(cur, left, cleft, agbno);
|
||||
return error;
|
||||
|
||||
out_error:
|
||||
@ -835,8 +830,8 @@ not_found:
|
||||
cright->rc_refcount = 1;
|
||||
cright->rc_domain = domain;
|
||||
}
|
||||
trace_xfs_refcount_find_right_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
|
||||
cright, right, agbno + aglen);
|
||||
trace_xfs_refcount_find_right_extent(cur, cright, right,
|
||||
agbno + aglen);
|
||||
return error;
|
||||
|
||||
out_error:
|
||||
@ -1139,8 +1134,7 @@ xfs_refcount_adjust_extents(
|
||||
tmp.rc_refcount = 1 + adj;
|
||||
tmp.rc_domain = XFS_REFC_DOMAIN_SHARED;
|
||||
|
||||
trace_xfs_refcount_modify_extent(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, &tmp);
|
||||
trace_xfs_refcount_modify_extent(cur, &tmp);
|
||||
|
||||
/*
|
||||
* Either cover the hole (increment) or
|
||||
@ -1205,8 +1199,7 @@ xfs_refcount_adjust_extents(
|
||||
if (ext.rc_refcount == MAXREFCOUNT)
|
||||
goto skip;
|
||||
ext.rc_refcount += adj;
|
||||
trace_xfs_refcount_modify_extent(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, &ext);
|
||||
trace_xfs_refcount_modify_extent(cur, &ext);
|
||||
cur->bc_refc.nr_ops++;
|
||||
if (ext.rc_refcount > 1) {
|
||||
error = xfs_refcount_update(cur, &ext);
|
||||
@ -1721,8 +1714,7 @@ xfs_refcount_adjust_cow_extents(
|
||||
tmp.rc_refcount = 1;
|
||||
tmp.rc_domain = XFS_REFC_DOMAIN_COW;
|
||||
|
||||
trace_xfs_refcount_modify_extent(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, &tmp);
|
||||
trace_xfs_refcount_modify_extent(cur, &tmp);
|
||||
|
||||
error = xfs_refcount_insert(cur, &tmp,
|
||||
&found_tmp);
|
||||
@ -1753,8 +1745,7 @@ xfs_refcount_adjust_cow_extents(
|
||||
}
|
||||
|
||||
ext.rc_refcount = 0;
|
||||
trace_xfs_refcount_modify_extent(cur->bc_mp,
|
||||
cur->bc_ag.pag->pag_agno, &ext);
|
||||
trace_xfs_refcount_modify_extent(cur, &ext);
|
||||
error = xfs_refcount_delete(cur, &found_rec);
|
||||
if (error)
|
||||
goto out_error;
|
||||
@ -1990,9 +1981,6 @@ xfs_refcount_recover_cow_leftovers(
|
||||
if (error)
|
||||
goto out_free;
|
||||
|
||||
trace_xfs_refcount_recover_extent(mp, pag->pag_agno,
|
||||
&rr->rr_rrec);
|
||||
|
||||
/* Free the orphan record */
|
||||
fsb = XFS_AGB_TO_FSB(mp, pag->pag_agno,
|
||||
rr->rr_rrec.rc_startblock);
|
||||
|
@ -3233,9 +3233,8 @@ TRACE_EVENT(xfs_refcount_lookup,
|
||||
|
||||
/* single-rcext tracepoint class */
|
||||
DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
|
||||
struct xfs_refcount_irec *irec),
|
||||
TP_ARGS(mp, agno, irec),
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec),
|
||||
TP_ARGS(cur, irec),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(xfs_agnumber_t, agno)
|
||||
@ -3245,8 +3244,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
|
||||
__field(xfs_nlink_t, refcount)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = mp->m_super->s_dev;
|
||||
__entry->agno = agno;
|
||||
__entry->dev = cur->bc_mp->m_super->s_dev;
|
||||
__entry->agno = cur->bc_ag.pag->pag_agno;
|
||||
__entry->domain = irec->rc_domain;
|
||||
__entry->startblock = irec->rc_startblock;
|
||||
__entry->blockcount = irec->rc_blockcount;
|
||||
@ -3263,15 +3262,14 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
|
||||
|
||||
#define DEFINE_REFCOUNT_EXTENT_EVENT(name) \
|
||||
DEFINE_EVENT(xfs_refcount_extent_class, name, \
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
|
||||
struct xfs_refcount_irec *irec), \
|
||||
TP_ARGS(mp, agno, irec))
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec), \
|
||||
TP_ARGS(cur, irec))
|
||||
|
||||
/* single-rcext and an agbno tracepoint class */
|
||||
DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
|
||||
struct xfs_refcount_irec *irec, xfs_agblock_t agbno),
|
||||
TP_ARGS(mp, agno, irec, agbno),
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec,
|
||||
xfs_agblock_t agbno),
|
||||
TP_ARGS(cur, irec, agbno),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(xfs_agnumber_t, agno)
|
||||
@ -3282,8 +3280,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
|
||||
__field(xfs_agblock_t, agbno)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = mp->m_super->s_dev;
|
||||
__entry->agno = agno;
|
||||
__entry->dev = cur->bc_mp->m_super->s_dev;
|
||||
__entry->agno = cur->bc_ag.pag->pag_agno;
|
||||
__entry->domain = irec->rc_domain;
|
||||
__entry->startblock = irec->rc_startblock;
|
||||
__entry->blockcount = irec->rc_blockcount;
|
||||
@ -3302,15 +3300,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
|
||||
|
||||
#define DEFINE_REFCOUNT_EXTENT_AT_EVENT(name) \
|
||||
DEFINE_EVENT(xfs_refcount_extent_at_class, name, \
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
|
||||
struct xfs_refcount_irec *irec, xfs_agblock_t agbno), \
|
||||
TP_ARGS(mp, agno, irec, agbno))
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec, \
|
||||
xfs_agblock_t agbno), \
|
||||
TP_ARGS(cur, irec, agbno))
|
||||
|
||||
/* double-rcext tracepoint class */
|
||||
DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
|
||||
struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2),
|
||||
TP_ARGS(mp, agno, i1, i2),
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
|
||||
struct xfs_refcount_irec *i2),
|
||||
TP_ARGS(cur, i1, i2),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(xfs_agnumber_t, agno)
|
||||
@ -3324,8 +3322,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
|
||||
__field(xfs_nlink_t, i2_refcount)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = mp->m_super->s_dev;
|
||||
__entry->agno = agno;
|
||||
__entry->dev = cur->bc_mp->m_super->s_dev;
|
||||
__entry->agno = cur->bc_ag.pag->pag_agno;
|
||||
__entry->i1_domain = i1->rc_domain;
|
||||
__entry->i1_startblock = i1->rc_startblock;
|
||||
__entry->i1_blockcount = i1->rc_blockcount;
|
||||
@ -3351,16 +3349,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
|
||||
|
||||
#define DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(name) \
|
||||
DEFINE_EVENT(xfs_refcount_double_extent_class, name, \
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
|
||||
struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), \
|
||||
TP_ARGS(mp, agno, i1, i2))
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1, \
|
||||
struct xfs_refcount_irec *i2), \
|
||||
TP_ARGS(cur, i1, i2))
|
||||
|
||||
/* double-rcext and an agbno tracepoint class */
|
||||
DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
|
||||
struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2,
|
||||
xfs_agblock_t agbno),
|
||||
TP_ARGS(mp, agno, i1, i2, agbno),
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
|
||||
struct xfs_refcount_irec *i2, xfs_agblock_t agbno),
|
||||
TP_ARGS(cur, i1, i2, agbno),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(xfs_agnumber_t, agno)
|
||||
@ -3375,8 +3372,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
|
||||
__field(xfs_agblock_t, agbno)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = mp->m_super->s_dev;
|
||||
__entry->agno = agno;
|
||||
__entry->dev = cur->bc_mp->m_super->s_dev;
|
||||
__entry->agno = cur->bc_ag.pag->pag_agno;
|
||||
__entry->i1_domain = i1->rc_domain;
|
||||
__entry->i1_startblock = i1->rc_startblock;
|
||||
__entry->i1_blockcount = i1->rc_blockcount;
|
||||
@ -3404,17 +3401,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
|
||||
|
||||
#define DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(name) \
|
||||
DEFINE_EVENT(xfs_refcount_double_extent_at_class, name, \
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
|
||||
struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \
|
||||
xfs_agblock_t agbno), \
|
||||
TP_ARGS(mp, agno, i1, i2, agbno))
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1, \
|
||||
struct xfs_refcount_irec *i2, xfs_agblock_t agbno), \
|
||||
TP_ARGS(cur, i1, i2, agbno))
|
||||
|
||||
/* triple-rcext tracepoint class */
|
||||
DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
|
||||
struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2,
|
||||
struct xfs_refcount_irec *i3),
|
||||
TP_ARGS(mp, agno, i1, i2, i3),
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
|
||||
struct xfs_refcount_irec *i2, struct xfs_refcount_irec *i3),
|
||||
TP_ARGS(cur, i1, i2, i3),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(xfs_agnumber_t, agno)
|
||||
@ -3432,8 +3427,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
|
||||
__field(xfs_nlink_t, i3_refcount)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = mp->m_super->s_dev;
|
||||
__entry->agno = agno;
|
||||
__entry->dev = cur->bc_mp->m_super->s_dev;
|
||||
__entry->agno = cur->bc_ag.pag->pag_agno;
|
||||
__entry->i1_domain = i1->rc_domain;
|
||||
__entry->i1_startblock = i1->rc_startblock;
|
||||
__entry->i1_blockcount = i1->rc_blockcount;
|
||||
@ -3468,10 +3463,9 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
|
||||
|
||||
#define DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(name) \
|
||||
DEFINE_EVENT(xfs_refcount_triple_extent_class, name, \
|
||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
|
||||
struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \
|
||||
struct xfs_refcount_irec *i3), \
|
||||
TP_ARGS(mp, agno, i1, i2, i3))
|
||||
TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1, \
|
||||
struct xfs_refcount_irec *i2, struct xfs_refcount_irec *i3), \
|
||||
TP_ARGS(cur, i1, i2, i3))
|
||||
|
||||
/* refcount btree tracepoints */
|
||||
DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_get);
|
||||
@ -3489,7 +3483,6 @@ DEFINE_REFCOUNT_EVENT(xfs_refcount_cow_increase);
|
||||
DEFINE_REFCOUNT_EVENT(xfs_refcount_cow_decrease);
|
||||
DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(xfs_refcount_merge_center_extents);
|
||||
DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_modify_extent);
|
||||
DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_recover_extent);
|
||||
DEFINE_REFCOUNT_EXTENT_AT_EVENT(xfs_refcount_split_extent);
|
||||
DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_left_extent);
|
||||
DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_right_extent);
|
||||
|
Loading…
Reference in New Issue
Block a user