3.16.61-rc1 review patch. If anyone has any objections, please let me know.
------------------
From: Omar Sandoval osandov@fb.com
commit 0552210997badb6a60740a26ff9d976a416510f0 upstream.
btrfs_free_extent() can fail because of ENOMEM. There's no reason to panic here, we can just abort the transaction.
Fixes: f4b9aa8d3b87 ("btrfs_truncate") Reviewed-by: Nikolay Borisov nborisov@suse.com Signed-off-by: Omar Sandoval osandov@fb.com Reviewed-by: David Sterba dsterba@suse.com Signed-off-by: David Sterba dsterba@suse.com [bwh: Backported to 3.16: - Also pass root to btrfs_abort_transaction() - Adjust context] Signed-off-by: Ben Hutchings ben@decadent.org.uk --- fs/btrfs/inode.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
--- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4313,7 +4313,10 @@ delete: extent_num_bytes, 0, btrfs_header_owner(leaf), ino, extent_offset, 0); - BUG_ON(ret); + if (ret) { + btrfs_abort_transaction(trans, root, ret); + break; + } }
if (found_type == BTRFS_INODE_ITEM_KEY)