btrfs: do not BUG_ON() on failure to update inode when setting xattr
authorFilipe Manana <fdmanana@suse.com>
Thu, 21 Apr 2022 10:03:09 +0000 (11:03 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 27 Apr 2022 20:20:21 +0000 (22:20 +0200)
commit193b4e83986d7ee6caa8ceefb5ee9f58240fbee0
treed37c519c9895d71e5e200c160bd2a8c231b06cb7
parentd0e64a981fd841cb0f28fcd6afcac55e6f1e6994
btrfs: do not BUG_ON() on failure to update inode when setting xattr

We are doing a BUG_ON() if we fail to update an inode after setting (or
clearing) a xattr, but there's really no reason to not instead simply
abort the transaction and return the error to the caller. This should be
a rare error because we have previously reserved enough metadata space to
update the inode and the delayed inode should have already been setup, so
an -ENOSPC or -ENOMEM, which are the possible errors, are very unlikely to
happen.

So replace the BUG_ON()s with a transaction abort.

CC: stable@vger.kernel.org # 4.9+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.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/xattr.c