3.16.61-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Omar Sandoval <osandov@xxxxxx> 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@xxxxxxxx> Signed-off-by: Omar Sandoval <osandov@xxxxxx> Reviewed-by: David Sterba <dsterba@xxxxxxxx> Signed-off-by: David Sterba <dsterba@xxxxxxxx> [bwh: Backported to 3.16: - Also pass root to btrfs_abort_transaction() - Adjust context] Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> --- 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)