• Chris Mason's avatar
    Btrfs: limit balancing work while flushing delayed refs · a4b6e07d
    Chris Mason authored
    The delayed reference mechanism is responsible for all updates to the
    extent allocation trees, including those updates created while processing
    the delayed references.
    This commit tries to limit the amount of work that gets created during
    the final run of delayed refs before a commit.  It avoids cowing new blocks
    unless it is required to finish the commit, and so it avoids new allocations
    that were not really required.
    The goal is to avoid infinite loops where we are always making more work
    on the final run of delayed refs.  Over the long term we'll make a
    special log for the last delayed ref updates as well.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>