• Filipe Manana's avatar
    btrfs: abort transaction when sibling keys check fails for leaves · 9ae5afd0
    Filipe Manana authored
    If the sibling keys check fails before we move keys from one sibling
    leaf to another, we are not aborting the transaction - we leave that to
    some higher level caller of btrfs_search_slot() (or anything else that
    uses it to insert items into a b+tree).
    
    This means that the transaction abort will provide a stack trace that
    omits the b+tree modification call chain. So change this to immediately
    abort the transaction and therefore get a more useful stack trace that
    shows us the call chain in the bt+tree modification code.
    
    It's also important to immediately abort the transaction just in case
    some higher level caller is not doing it, as this indicates a very
    serious corruption and we should stop the possibility of doing further
    damage.
    Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    9ae5afd0
ctree.c 132 KB