• Alexandre Oliva's avatar
    Btrfs: test free space only for unclustered allocation · a5f6f719
    Alexandre Oliva authored
    Since the clustered allocation may be taking extents from a different
    block group, there's no point in spin-locking and testing the current
    block group free space before attempting to allocate space from a
    cluster, even more so when we might refrain from even trying the
    cluster in the current block group because, after the cluster was set
    up, not enough free space remained.  Furthermore, cluster creation
    attempts fail fast when the block group doesn't have enough free
    space, so the test was completely superfluous.
    
    I've move the free space test past the cluster allocation attempt,
    where it is more useful, and arranged for a cluster in the current
    block group to be released before trying an unclustered allocation,
    when we reach the LOOP_NO_EMPTY_SIZE stage, so that the free space in
    the cluster stands a chance of being combined with additional free
    space in the block group so as to succeed in the allocation attempt.
    Signed-off-by: default avatarAlexandre Oliva <oliva@lsd.ic.unicamp.br>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    a5f6f719
extent-tree.c 204 KB