diff options
author | Tsutomu Itoh <t-itoh@jp.fujitsu.com> | 2011-03-23 04:14:16 -0400 |
---|---|---|
committer | root <Chris Mason chris.mason@oracle.com> | 2011-03-28 05:37:35 -0400 |
commit | db5b493ac78e46c7b6bad22cd25d8041564cd8ea (patch) | |
tree | 18f484c3d8194b80165e5400831931a3ac5c58ba /fs/btrfs/transaction.c | |
parent | 1abe9b8a138c9988ba8f7bfded6453649a31541f (diff) |
Btrfs: cleanup some BUG_ON()
This patch changes some BUG_ON() to the error return.
(but, most callers still use BUG_ON())
Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r-- | fs/btrfs/transaction.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 5b4bc685bb0e..ce48eb59d615 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -57,7 +57,8 @@ static noinline int join_transaction(struct btrfs_root *root) | |||
57 | if (!cur_trans) { | 57 | if (!cur_trans) { |
58 | cur_trans = kmem_cache_alloc(btrfs_transaction_cachep, | 58 | cur_trans = kmem_cache_alloc(btrfs_transaction_cachep, |
59 | GFP_NOFS); | 59 | GFP_NOFS); |
60 | BUG_ON(!cur_trans); | 60 | if (!cur_trans) |
61 | return -ENOMEM; | ||
61 | root->fs_info->generation++; | 62 | root->fs_info->generation++; |
62 | cur_trans->num_writers = 1; | 63 | cur_trans->num_writers = 1; |
63 | cur_trans->num_joined = 0; | 64 | cur_trans->num_joined = 0; |
@@ -195,7 +196,11 @@ again: | |||
195 | wait_current_trans(root); | 196 | wait_current_trans(root); |
196 | 197 | ||
197 | ret = join_transaction(root); | 198 | ret = join_transaction(root); |
198 | BUG_ON(ret); | 199 | if (ret < 0) { |
200 | if (type != TRANS_JOIN_NOLOCK) | ||
201 | mutex_unlock(&root->fs_info->trans_mutex); | ||
202 | return ERR_PTR(ret); | ||
203 | } | ||
199 | 204 | ||
200 | cur_trans = root->fs_info->running_transaction; | 205 | cur_trans = root->fs_info->running_transaction; |
201 | cur_trans->use_count++; | 206 | cur_trans->use_count++; |
@@ -1156,7 +1161,8 @@ int btrfs_commit_transaction_async(struct btrfs_trans_handle *trans, | |||
1156 | struct btrfs_transaction *cur_trans; | 1161 | struct btrfs_transaction *cur_trans; |
1157 | 1162 | ||
1158 | ac = kmalloc(sizeof(*ac), GFP_NOFS); | 1163 | ac = kmalloc(sizeof(*ac), GFP_NOFS); |
1159 | BUG_ON(!ac); | 1164 | if (!ac) |
1165 | return -ENOMEM; | ||
1160 | 1166 | ||
1161 | INIT_DELAYED_WORK(&ac->work, do_async_commit); | 1167 | INIT_DELAYED_WORK(&ac->work, do_async_commit); |
1162 | ac->root = root; | 1168 | ac->root = root; |