Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d280e5be authored by Liu Bo's avatar Liu Bo Committed by Chris Mason
Browse files

Btrfs: fix ordered extent leak when failing to start a transaction



We cannot just return error before freeing ordered extent and releasing reserved
space when we fail to start a transacion.

Signed-off-by: default avatarLiu Bo <bo.li.liu@oracle.com>
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 24c03fa5
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1882,8 +1882,11 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
				trans = btrfs_join_transaction_nolock(root);
			else
				trans = btrfs_join_transaction(root);
			if (IS_ERR(trans))
				return PTR_ERR(trans);
			if (IS_ERR(trans)) {
				ret = PTR_ERR(trans);
				trans = NULL;
				goto out;
			}
			trans->block_rsv = &root->fs_info->delalloc_block_rsv;
			ret = btrfs_update_inode_fallback(trans, root, inode);
			if (ret) /* -ENOMEM or corruption */