• Christoph Hellwig's avatar
    xfs: do not immediately reuse busy extent ranges · e26f0501
    Christoph Hellwig authored
    Every time we reallocate a busy extent, we cause a synchronous log force
    to occur to ensure the freeing transaction is on disk before we continue
    and use the newly allocated extent.  This is extremely sub-optimal as we
    have to mark every transaction with blocks that get reused as synchronous.
    
    Instead of searching the busy extent list after deciding on the extent to
    allocate, check each candidate extent during the allocation decisions as
    to whether they are in the busy list.  If they are in the busy list, we
    trim the busy range out of the extent we have found and determine if that
    trimmed range is still OK for allocation. In many cases, this check can
    be incorporated into the allocation extent alignment code which already
    does trimming of the found extent before determining if it is a valid
    candidate for allocation.
    
    Based on earlier patches from Dave Chinner.
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
    e26f0501
xfs_trace.h 55.8 KB