• Josef Bacik's avatar
    Btrfs: cleanup how we setup free space clusters · 4e69b598
    Josef Bacik authored
    This patch makes the free space cluster refilling code a little easier to
    understand, and fixes some things with the bitmap part of it.  Currently we
    either want to refill a cluster with
    
    1) All normal extent entries (those without bitmaps)
    2) A bitmap entry with enough space
    
    The current code has this ugly jump around logic that will first try and fill up
    the cluster with extent entries and then if it can't do that it will try and
    find a bitmap to use.  So instead split this out into two functions, one that
    tries to find only normal entries, and one that tries to find bitmaps.
    
    This also fixes a suboptimal thing we would do with bitmaps.  If we used a
    bitmap we would just tell the cluster that we were pointing at a bitmap and it
    would do the tree search in the block group for that entry every time we tried
    to make an allocation.  Instead of doing that now we just add it to the clusters
    group.
    
    I tested this with my ENOSPC tests and xfstests and it survived.
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    4e69b598
free-space-cache.c 54.7 KB