Re: [PATCH v2 1/3] xfs: set minleft correctly for sparse chunk errortag allocation
Dave Chinner <[email protected]>
| Newsgroups | org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <aoOKYRBTK7ocCBrY@dread> |
On Fri, Aug 14, 2026 at 09:22:37AM -0400, Brian Foster wrote:
> The errortag instrumentation for forced sparse chunk allocation
> jumps straight to the allocation path without setting args.minleft.
> minleft is unconditionally set to ->inobt_maxlevels for the normal
> allocation path. Lift the assignment to the initial args setup so
> it covers all possible paths.
>
> Assisted-by: LLM
> Fixes: 1cdadee11f8d ("xfs: randomly do sparse inode allocations in DEBUG mode")
> Signed-off-by: Brian Foster <[email protected]>
> Reviewed-by: Mark Tinguely <[email protected]>
> ---
> fs/xfs/libxfs/xfs_ialloc.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
> index ffcdd1f691fd..633b2d6e42c5 100644
> --- a/fs/xfs/libxfs/xfs_ialloc.c
> +++ b/fs/xfs/libxfs/xfs_ialloc.c
> @@ -733,6 +733,10 @@ xfs_ialloc_ag_alloc(
> igeo->maxicount)
> return -ENOSPC;
> args.minlen = args.maxlen = igeo->ialloc_blks;
> +
> + /* Allow space for the inode btree to split. */
> + args.minleft = igeo->inobt_maxlevels;
As an extra question: is that reservation even correct? We can split
both the inobt and the finobt on insert, and this only reserves
space for a inobt split....
Secondly, why always reserve space for a max level split? The amount
we need is depedent on the current level of the btree, and for all
other btree types our reservations are based on the current level.
i.e. we know the math needed to make this dependent on current btree
levels, and we know that we are inserting into multiple btrees of
different heights here, so maybe we should fix this reservation
whilst we are here, too?
-Dave.
--
Dave Chinner
[email protected]