• Josef Bacik's avatar
    Btrfs: fix the allocator loop logic · 723bda20
    Josef Bacik authored
    I was testing with empty_cluster = 0 to try and reproduce a problem and kept
    hitting early enospc panics.  This was because our loop logic was a little
    confused.  So this is what I did
    
    1) Make the loop variable the ultimate decider on wether we should loop again
    isntead of checking to see if we had an uncached bg, empty size or empty
    cluster.
    
    2) Increment loop before checking to see what we are on to make the loop
    definitions make more sense.
    
    3) If we are on the chunk alloc loop don't set empty_size/empty_cluster to 0
    unless we didn't actually allocate a chunk.  If we did allocate a chunk we
    should be able to easily setup a new cluster so clearing
    empty_size/empty_cluster makes us less efficient.
    
    This kept me from hitting panics while trying to reproduce the other problem.
    Thanks,
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    723bda20
extent-tree.c 192 KB