From 6db6afd9937e37d61a14f9eeb1db5e37cefed1a6 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Mon, 28 Aug 2017 16:54:12 +0200 Subject: [PATCH] btrfs-progs: return errors from btrfs_start_transaction Now that all callers will catch errors, we can return them from the function. Signed-off-by: David Sterba --- transaction.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/transaction.h b/transaction.h index 0c41af51..738eebd1 100644 --- a/transaction.h +++ b/transaction.h @@ -22,6 +22,8 @@ #include "kerncompat.h" #include "ctree.h" +#include "messages.h" + struct btrfs_trans_handle { u64 transid; u64 alloc_exclude_start; @@ -37,9 +39,18 @@ btrfs_start_transaction(struct btrfs_root *root, int num_blocks) struct btrfs_fs_info *fs_info = root->fs_info; struct btrfs_trans_handle *h = malloc(sizeof(*h)); - BUG_ON(!h); - BUG_ON(root->commit_root); - BUG_ON(fs_info->running_transaction); + if (!h) + return ERR_PTR(-ENOMEM); + if (root->commit_root) { + error("commit_root aleady set when starting transaction"); + kfree(h); + return ERR_PTR(-EINVAL); + } + if (fs_info->running_transaction) { + error("attempt to start transaction over already running one"); + kfree(h); + return ERR_PTR(-EINVAL); + } fs_info->running_transaction = h; fs_info->generation++; h->transid = fs_info->generation;