On Wed, Oct 04, 2023 at 11:19:42AM +1100, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > As they are now identical functions exact for the allocation > function they call. > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> > --- > fs/xfs/libxfs/xfs_alloc.c | 84 ++++++++++++++++++--------------------- > fs/xfs/xfs_trace.h | 1 + > 2 files changed, 40 insertions(+), 45 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c > index 3190c8204903..27c62f303488 100644 > --- a/fs/xfs/libxfs/xfs_alloc.c > +++ b/fs/xfs/libxfs/xfs_alloc.c > @@ -3649,6 +3649,43 @@ xfs_alloc_vextent_first_ag( > return xfs_alloc_vextent_finish(args, minimum_agno, error, true); > } > > +static int > +xfs_alloc_vextent_bno( > + struct xfs_alloc_arg *args, > + xfs_fsblock_t target, > + bool exact) > +{ > + struct xfs_mount *mp = args->mp; > + xfs_agnumber_t minimum_agno; > + int error; > + > + ASSERT(args->pag != NULL); > + ASSERT(args->pag->pag_agno == XFS_FSB_TO_AGNO(mp, target)); > + > + args->agno = args->pag->pag_agno; > + args->agbno = XFS_FSB_TO_AGBNO(mp, target); > + > + trace_xfs_alloc_vextent_bno(args); Not sure why we need this new tracepoint when a tracepoint is triggered immediately prior to both callsites? --D > + > + error = xfs_alloc_vextent_check_args(args, args->agno, args->agbno, > + &minimum_agno); > + if (error) { > + if (error == -ENOSPC) > + return 0; > + return error; > + } > + > + error = xfs_alloc_vextent_prepare_ag(args, 0); > + if (!error && args->agbp) { > + if (exact) > + error = xfs_alloc_ag_vextent_exact(args); > + else > + error = xfs_alloc_ag_vextent_near(args, 0); > + } > + > + return xfs_alloc_vextent_finish(args, minimum_agno, error, false); > +} > + > /* > * Allocate at the exact block target or fail. Caller is expected to hold a > * perag reference in args->pag. > @@ -3658,28 +3695,8 @@ xfs_alloc_vextent_exact_bno( > struct xfs_alloc_arg *args, > xfs_fsblock_t target) > { > - struct xfs_mount *mp = args->mp; > - xfs_agnumber_t minimum_agno; > - int error; > - > - args->agno = args->pag->pag_agno; > - args->agbno = XFS_FSB_TO_AGBNO(mp, target); > - > trace_xfs_alloc_vextent_exact_bno(args); > - > - error = xfs_alloc_vextent_check_args(args, args->agno, args->agbno, > - &minimum_agno); > - if (error) { > - if (error == -ENOSPC) > - return 0; > - return error; > - } > - > - error = xfs_alloc_vextent_prepare_ag(args, 0); > - if (!error && args->agbp) > - error = xfs_alloc_ag_vextent_exact(args); > - > - return xfs_alloc_vextent_finish(args, minimum_agno, error, false); > + return xfs_alloc_vextent_bno(args, target, true); > } > > /* > @@ -3693,31 +3710,8 @@ xfs_alloc_vextent_near_bno( > struct xfs_alloc_arg *args, > xfs_fsblock_t target) > { > - struct xfs_mount *mp = args->mp; > - xfs_agnumber_t minimum_agno; > - uint32_t alloc_flags = 0; > - int error; > - > - ASSERT(args->pag->pag_agno == XFS_FSB_TO_AGNO(mp, target)); > - > - args->agno = args->pag->pag_agno; > - args->agbno = XFS_FSB_TO_AGBNO(mp, target); > - > trace_xfs_alloc_vextent_near_bno(args); > - > - error = xfs_alloc_vextent_check_args(args, args->agno, args->agbno, > - &minimum_agno); > - if (error) { > - if (error == -ENOSPC) > - return 0; > - return error; > - } > - > - error = xfs_alloc_vextent_prepare_ag(args, alloc_flags); > - if (!error && args->agbp) > - error = xfs_alloc_ag_vextent_near(args, alloc_flags); > - > - return xfs_alloc_vextent_finish(args, minimum_agno, error, false); > + return xfs_alloc_vextent_bno(args, target, false); > } > > /* Ensure that the freelist is at full capacity. */ > diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h > index 3926cf7f2a6e..628da36b20b9 100644 > --- a/fs/xfs/xfs_trace.h > +++ b/fs/xfs/xfs_trace.h > @@ -1884,6 +1884,7 @@ 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_bno); > DEFINE_ALLOC_EVENT(xfs_alloc_vextent_finish); > > TRACE_EVENT(xfs_alloc_cur_check, > -- > 2.40.1 >