• C
    xfs: don't rely on ->total in xfs_alloc_space_available · 12ef8301
    Christoph Hellwig 提交于
    ->total is a bit of an odd parameter passed down to the low-level
    allocator all the way from the high-level callers.  It's supposed to
    contain the maximum number of blocks to be allocated for the whole
    transaction [1].
    
    But in xfs_iomap_write_allocate we only convert existing delayed
    allocations and thus only have a minimal block reservation for the
    current transaction, so xfs_alloc_space_available can't use it for
    the allocation decisions.  Use the maximum of args->total and the
    calculated block requirement to make a decision.  We probably should
    get rid of args->total eventually and instead apply ->minleft more
    broadly, but that will require some extensive changes all over.
    
    [1] which creates lots of confusion as most callers don't decrement it
    once doing a first allocation.  But that's for a separate series.
    Signed-off-by: NChristoph Hellwig <hch@lst.de>
    Reviewed-by: NBrian Foster <bfoster@redhat.com>
    Signed-off-by: NDarrick J. Wong <darrick.wong@oracle.com>
    12ef8301
xfs_alloc.c 80.1 KB