• Filipe Manana's avatar
    btrfs: remove BUG_ON() after splitting leaf · bb8e9a60
    Filipe Manana authored
    After calling split_leaf() we BUG_ON() if the returned value is greater
    than zero. However split_leaf() only returns 0, in case of success, or a
    negative value in case of an error.
    
    The reason for the BUG_ON() is that if we ever get a positive return
    value from split_leaf(), we can not simply propagate it to the callers
    of btrfs_search_slot(), as that would be interpreted as "key not found"
    and not as an error. That means it could result in callers ending up
    causing some potential silent corruption.
    
    So change the BUG_ON() to an ASSERT(), and in case assertions are
    disabled, produce a warning and set the return value to an error, to make
    it not possible to get into a silent corruption and having the error not
    noticed.
    Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.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>
    bb8e9a60
ctree.c 124 KB