• Chris Mason's avatar
    Btrfs: prevent looping forever in finish_current_insert and del_pending_extents · 87ef2bb4
    Chris Mason authored
    finish_current_insert and del_pending_extents process extent tree modifications
    that build up while we are changing the extent tree.  It is a confusing
    bit of code that prevents recursion.
    
    Both functions run through a list of pending operations and both funcs
    add to the list of pending operations.  If you have two procs in either
    one of them, they can end up looping forever making more work for each other.
    
    This patch makes them walk forward through the list of pending changes instead
    of always trying to process the entire list.  At transaction commit
    time, we catch any changes that were left over.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    87ef2bb4
extent-tree.c 136 KB