btrfs: remove BUG_ON()'s in add_new_free_space()
authorFilipe Manana <fdmanana@suse.com>
Fri, 30 Jun 2023 15:03:44 +0000 (16:03 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 24 Jul 2023 16:06:05 +0000 (18:06 +0200)
commitd8ccbd21918fd7fa6ce3226cffc22c444228e8ad
tree912e5f1e52345667e1e8ab43bc31c73f9e191235
parent8dbfc14fc736eb701089aff09645c3d4ad3decb1
btrfs: remove BUG_ON()'s in add_new_free_space()

At add_new_free_space() we have these BUG_ON()'s that are there to deal
with any failure to add free space to the in memory free space cache.
Such failures are mostly -ENOMEM that should be very rare. However there's
no need to have these BUG_ON()'s, we can just return any error to the
caller and all callers and their upper call chain are already dealing with
errors.

So just make add_new_free_space() return any errors, while removing the
BUG_ON()'s, and returning the total amount of added free space to an
optional u64 pointer argument.

Reported-by: syzbot+3ba856e07b7127889d8c@syzkaller.appspotmail.com
Link: https://lore.kernel.org/linux-btrfs/000000000000e9cb8305ff4e8327@google.com/
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/block-group.c
fs/btrfs/block-group.h
fs/btrfs/free-space-tree.c