• Chris Mason's avatar
    Btrfs: find smallest available device extent during chunk allocation · 9779b72f
    Chris Mason authored
    Allocating new block group is easy when the disk has plenty of space.
    But things get difficult as the disk fills up, especially if
    the FS has been run through btrfs-vol -b.  The balance operation
    is likely to make the total bytes available on the device greater
    than the largest extent we'll actually be able to allocate.
    But the device extent allocation code incorrectly assumes that a device
    with 5G free will be able to allocate a 5G extent.  It isn't normally a
    problem because device extents don't get freed unless btrfs-vol -b
    is run.
    This fixes the device extent allocator to remember the largest free
    extent it can find, and then uses that value as a fallback.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>