• D
    xfs: obey minleft values during extent allocation correctly · bf59170a
    Dave Chinner 提交于
    When allocating an extent that is long enough to consume the
    remaining free space in an AG, we need to ensure that the allocation
    leaves enough space in the AG for any subsequent bmap btree blocks
    that are needed to track the new extent. These have to be allocated
    in the same AG as we only reserve enough blocks in an allocation
    transaction for modification of the freespace trees in a single AG.
    
    xfs_alloc_fix_minleft() has been considering blocks on the AGFL as
    free blocks available for extent and bmbt block allocation, which is
    not correct - blocks on the AGFL are there exclusively for the use
    of the free space btrees. As a result, when minleft is less than the
    number of blocks on the AGFL, xfs_alloc_fix_minleft() does not trim
    the given extent to leave minleft blocks available for bmbt
    allocation, and hence we can fail allocation during bmbt record
    insertion.
    Signed-off-by: NDave Chinner <dchinner@redhat.com>
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    Signed-off-by: NAlex Elder <aelder@sgi.com>
    bf59170a
xfs_alloc.c 81.6 KB