Skip to content

Commit

Permalink
xfs: add tracepoints for each of the externally visible allocators
Browse files Browse the repository at this point in the history
There are now five separate space allocator interfaces exposed to the
rest of XFS for five different strategies to find space.  Add
tracepoints for each of them so that I can tell from a trace dump
exactly which ones got called and what happened underneath them.  Add a
sixth so it's more obvious if an allocation actually happened.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
  • Loading branch information
Darrick J. Wong committed Mar 19, 2023
1 parent 9eb7759 commit e6fbb71
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
17 changes: 17 additions & 0 deletions fs/xfs/libxfs/xfs_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -3255,6 +3255,8 @@ xfs_alloc_vextent_finish(
XFS_STATS_INC(mp, xs_allocx);
XFS_STATS_ADD(mp, xs_allocb, args->len);

trace_xfs_alloc_vextent_finish(args);

out_drop_perag:
if (drop_perag && args->pag) {
xfs_perag_rele(args->pag);
Expand Down Expand Up @@ -3284,6 +3286,9 @@ xfs_alloc_vextent_this_ag(

args->agno = agno;
args->agbno = 0;

trace_xfs_alloc_vextent_this_ag(args);

error = xfs_alloc_vextent_check_args(args, XFS_AGB_TO_FSB(mp, agno, 0),
&minimum_agno);
if (error) {
Expand Down Expand Up @@ -3405,6 +3410,9 @@ xfs_alloc_vextent_start_ag(

args->agno = NULLAGNUMBER;
args->agbno = NULLAGBLOCK;

trace_xfs_alloc_vextent_first_ag(args);

error = xfs_alloc_vextent_check_args(args, target, &minimum_agno);
if (error) {
if (error == -ENOSPC)
Expand Down Expand Up @@ -3455,6 +3463,9 @@ xfs_alloc_vextent_first_ag(

args->agno = NULLAGNUMBER;
args->agbno = NULLAGBLOCK;

trace_xfs_alloc_vextent_start_ag(args);

error = xfs_alloc_vextent_check_args(args, target, &minimum_agno);
if (error) {
if (error == -ENOSPC)
Expand Down Expand Up @@ -3486,6 +3497,9 @@ xfs_alloc_vextent_exact_bno(

args->agno = XFS_FSB_TO_AGNO(mp, target);
args->agbno = XFS_FSB_TO_AGBNO(mp, target);

trace_xfs_alloc_vextent_near_bno(args);

error = xfs_alloc_vextent_check_args(args, target, &minimum_agno);
if (error) {
if (error == -ENOSPC)
Expand Down Expand Up @@ -3521,6 +3535,9 @@ xfs_alloc_vextent_near_bno(

args->agno = XFS_FSB_TO_AGNO(mp, target);
args->agbno = XFS_FSB_TO_AGBNO(mp, target);

trace_xfs_alloc_vextent_exact_bno(args);

error = xfs_alloc_vextent_check_args(args, target, &minimum_agno);
if (error) {
if (error == -ENOSPC)
Expand Down
7 changes: 7 additions & 0 deletions fs/xfs/xfs_trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -1883,6 +1883,13 @@ DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed);

DEFINE_ALLOC_EVENT(xfs_alloc_vextent_this_ag);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_start_ag);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_first_ag);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_exact_bno);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_near_bno);
DEFINE_ALLOC_EVENT(xfs_alloc_vextent_finish);

TRACE_EVENT(xfs_alloc_cur_check,
TP_PROTO(struct xfs_mount *mp, xfs_btnum_t btnum, xfs_agblock_t bno,
xfs_extlen_t len, xfs_extlen_t diff, bool new),
Expand Down

0 comments on commit e6fbb71

Please sign in to comment.