btrfs-progs: return errors from btrfs_start_transaction
authorDavid Sterba <dsterba@suse.com>
Mon, 28 Aug 2017 14:54:12 +0000 (16:54 +0200)
committerDavid Sterba <dsterba@suse.com>
Fri, 8 Sep 2017 14:15:05 +0000 (16:15 +0200)
Now that all callers will catch errors, we can return them from the
function.

Signed-off-by: David Sterba <dsterba@suse.com>
transaction.h

index 0c41af5..738eebd 100644 (file)
@@ -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;