• Darrick J. Wong's avatar
    xfs: fix fdblocks accounting w/ RMAPBT per-AG reservation · d8cb5e42
    Darrick J. Wong authored
    In __xfs_ag_resv_init we incorrectly calculate the amount by which to
    decrease fdblocks when reserving blocks for the rmapbt.  Because rmapbt
    allocations do not decrease fdblocks, we must decrease fdblocks by the
    entire size of the requested reservation in order to achieve our goal of
    always having enough free blocks to satisfy an rmapbt expansion.
    
    This is in contrast to the refcountbt/finobt, which /do/ subtract from
    fdblocks whenever they allocate a block.  For this allocation type we
    preserve the existing behavior where we decrease fdblocks only by the
    requested reservation minus the size of the existing tree.
    
    This fixes the problem where the available block counts reported by
    statfs change across a remount if there had been an rmapbt size change
    since mount time.
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: default avatarAllison Henderson <allison.henderson@oracle.com>
    d8cb5e42
xfs_ag_resv.c 11.1 KB