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>
This commit is contained in:
parent
1abe9b8a13
commit
db5b493ac7
|
@ -3709,7 +3709,8 @@ int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root
|
||||||
unsigned long ptr;
|
unsigned long ptr;
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
ret = btrfs_insert_empty_item(trans, root, path, cpu_key, data_size);
|
ret = btrfs_insert_empty_item(trans, root, path, cpu_key, data_size);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
leaf = path->nodes[0];
|
leaf = path->nodes[0];
|
||||||
|
|
|
@ -1248,7 +1248,10 @@ struct btrfs_root *btrfs_read_fs_root_no_radix(struct btrfs_root *tree_root,
|
||||||
root, fs_info, location->objectid);
|
root, fs_info, location->objectid);
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path) {
|
||||||
|
kfree(root);
|
||||||
|
return ERR_PTR(-ENOMEM);
|
||||||
|
}
|
||||||
ret = btrfs_search_slot(NULL, tree_root, location, path, 0, 0);
|
ret = btrfs_search_slot(NULL, tree_root, location, path, 0, 0);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
l = path->nodes[0];
|
l = path->nodes[0];
|
||||||
|
|
|
@ -5463,7 +5463,8 @@ static int alloc_reserved_file_extent(struct btrfs_trans_handle *trans,
|
||||||
size = sizeof(*extent_item) + btrfs_extent_inline_ref_size(type);
|
size = sizeof(*extent_item) + btrfs_extent_inline_ref_size(type);
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
path->leave_spinning = 1;
|
path->leave_spinning = 1;
|
||||||
ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path,
|
ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path,
|
||||||
|
@ -6457,10 +6458,14 @@ int btrfs_drop_subtree(struct btrfs_trans_handle *trans,
|
||||||
BUG_ON(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
|
BUG_ON(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
wc = kzalloc(sizeof(*wc), GFP_NOFS);
|
wc = kzalloc(sizeof(*wc), GFP_NOFS);
|
||||||
BUG_ON(!wc);
|
if (!wc) {
|
||||||
|
btrfs_free_path(path);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
btrfs_assert_tree_locked(parent);
|
btrfs_assert_tree_locked(parent);
|
||||||
parent_level = btrfs_header_level(parent);
|
parent_level = btrfs_header_level(parent);
|
||||||
|
@ -6918,7 +6923,11 @@ static noinline int get_new_locations(struct inode *reloc_inode,
|
||||||
}
|
}
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path) {
|
||||||
|
if (exts != *extents)
|
||||||
|
kfree(exts);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
cur_pos = extent_key->objectid - offset;
|
cur_pos = extent_key->objectid - offset;
|
||||||
last_byte = extent_key->objectid + extent_key->offset;
|
last_byte = extent_key->objectid + extent_key->offset;
|
||||||
|
@ -7442,7 +7451,8 @@ static noinline int replace_extents_in_leaf(struct btrfs_trans_handle *trans,
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
new_extent = kmalloc(sizeof(*new_extent), GFP_NOFS);
|
new_extent = kmalloc(sizeof(*new_extent), GFP_NOFS);
|
||||||
BUG_ON(!new_extent);
|
if (!new_extent)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
ref = btrfs_lookup_leaf_ref(root, leaf->start);
|
ref = btrfs_lookup_leaf_ref(root, leaf->start);
|
||||||
BUG_ON(!ref);
|
BUG_ON(!ref);
|
||||||
|
@ -7647,7 +7657,8 @@ static noinline int init_reloc_tree(struct btrfs_trans_handle *trans,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
root_item = kmalloc(sizeof(*root_item), GFP_NOFS);
|
root_item = kmalloc(sizeof(*root_item), GFP_NOFS);
|
||||||
BUG_ON(!root_item);
|
if (!root_item)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
ret = btrfs_copy_root(trans, root, root->commit_root,
|
ret = btrfs_copy_root(trans, root, root->commit_root,
|
||||||
&eb, BTRFS_TREE_RELOC_OBJECTID);
|
&eb, BTRFS_TREE_RELOC_OBJECTID);
|
||||||
|
@ -7673,7 +7684,7 @@ static noinline int init_reloc_tree(struct btrfs_trans_handle *trans,
|
||||||
|
|
||||||
reloc_root = btrfs_read_fs_root_no_radix(root->fs_info->tree_root,
|
reloc_root = btrfs_read_fs_root_no_radix(root->fs_info->tree_root,
|
||||||
&root_key);
|
&root_key);
|
||||||
BUG_ON(!reloc_root);
|
BUG_ON(IS_ERR(reloc_root));
|
||||||
reloc_root->last_trans = trans->transid;
|
reloc_root->last_trans = trans->transid;
|
||||||
reloc_root->commit_root = NULL;
|
reloc_root->commit_root = NULL;
|
||||||
reloc_root->ref_tree = &root->fs_info->reloc_ref_tree;
|
reloc_root->ref_tree = &root->fs_info->reloc_ref_tree;
|
||||||
|
|
|
@ -48,7 +48,8 @@ int btrfs_insert_file_extent(struct btrfs_trans_handle *trans,
|
||||||
struct extent_buffer *leaf;
|
struct extent_buffer *leaf;
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
file_key.objectid = objectid;
|
file_key.objectid = objectid;
|
||||||
file_key.offset = pos;
|
file_key.offset = pos;
|
||||||
btrfs_set_key_type(&file_key, BTRFS_EXTENT_DATA_KEY);
|
btrfs_set_key_type(&file_key, BTRFS_EXTENT_DATA_KEY);
|
||||||
|
|
|
@ -30,7 +30,8 @@ int btrfs_find_highest_inode(struct btrfs_root *root, u64 *objectid)
|
||||||
int slot;
|
int slot;
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
search_key.objectid = BTRFS_LAST_FREE_OBJECTID;
|
search_key.objectid = BTRFS_LAST_FREE_OBJECTID;
|
||||||
search_key.type = -1;
|
search_key.type = -1;
|
||||||
|
|
|
@ -2350,12 +2350,15 @@ static noinline long btrfs_ioctl_start_sync(struct file *file, void __user *argp
|
||||||
struct btrfs_root *root = BTRFS_I(file->f_dentry->d_inode)->root;
|
struct btrfs_root *root = BTRFS_I(file->f_dentry->d_inode)->root;
|
||||||
struct btrfs_trans_handle *trans;
|
struct btrfs_trans_handle *trans;
|
||||||
u64 transid;
|
u64 transid;
|
||||||
|
int ret;
|
||||||
|
|
||||||
trans = btrfs_start_transaction(root, 0);
|
trans = btrfs_start_transaction(root, 0);
|
||||||
if (IS_ERR(trans))
|
if (IS_ERR(trans))
|
||||||
return PTR_ERR(trans);
|
return PTR_ERR(trans);
|
||||||
transid = trans->transid;
|
transid = trans->transid;
|
||||||
btrfs_commit_transaction_async(trans, root, 0);
|
ret = btrfs_commit_transaction_async(trans, root, 0);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (argp)
|
if (argp)
|
||||||
if (copy_to_user(argp, &transid, sizeof(transid)))
|
if (copy_to_user(argp, &transid, sizeof(transid)))
|
||||||
|
|
|
@ -88,7 +88,8 @@ int btrfs_find_last_root(struct btrfs_root *root, u64 objectid,
|
||||||
search_key.offset = (u64)-1;
|
search_key.offset = (u64)-1;
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0);
|
ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -332,7 +333,8 @@ int btrfs_del_root(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
||||||
struct extent_buffer *leaf;
|
struct extent_buffer *leaf;
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
ret = btrfs_search_slot(trans, root, key, path, -1, 1);
|
ret = btrfs_search_slot(trans, root, key, path, -1, 1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
@ -57,7 +57,8 @@ static noinline int join_transaction(struct btrfs_root *root)
|
||||||
if (!cur_trans) {
|
if (!cur_trans) {
|
||||||
cur_trans = kmem_cache_alloc(btrfs_transaction_cachep,
|
cur_trans = kmem_cache_alloc(btrfs_transaction_cachep,
|
||||||
GFP_NOFS);
|
GFP_NOFS);
|
||||||
BUG_ON(!cur_trans);
|
if (!cur_trans)
|
||||||
|
return -ENOMEM;
|
||||||
root->fs_info->generation++;
|
root->fs_info->generation++;
|
||||||
cur_trans->num_writers = 1;
|
cur_trans->num_writers = 1;
|
||||||
cur_trans->num_joined = 0;
|
cur_trans->num_joined = 0;
|
||||||
|
@ -195,7 +196,11 @@ again:
|
||||||
wait_current_trans(root);
|
wait_current_trans(root);
|
||||||
|
|
||||||
ret = join_transaction(root);
|
ret = join_transaction(root);
|
||||||
BUG_ON(ret);
|
if (ret < 0) {
|
||||||
|
if (type != TRANS_JOIN_NOLOCK)
|
||||||
|
mutex_unlock(&root->fs_info->trans_mutex);
|
||||||
|
return ERR_PTR(ret);
|
||||||
|
}
|
||||||
|
|
||||||
cur_trans = root->fs_info->running_transaction;
|
cur_trans = root->fs_info->running_transaction;
|
||||||
cur_trans->use_count++;
|
cur_trans->use_count++;
|
||||||
|
@ -1156,7 +1161,8 @@ int btrfs_commit_transaction_async(struct btrfs_trans_handle *trans,
|
||||||
struct btrfs_transaction *cur_trans;
|
struct btrfs_transaction *cur_trans;
|
||||||
|
|
||||||
ac = kmalloc(sizeof(*ac), GFP_NOFS);
|
ac = kmalloc(sizeof(*ac), GFP_NOFS);
|
||||||
BUG_ON(!ac);
|
if (!ac)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
INIT_DELAYED_WORK(&ac->work, do_async_commit);
|
INIT_DELAYED_WORK(&ac->work, do_async_commit);
|
||||||
ac->root = root;
|
ac->root = root;
|
||||||
|
|
|
@ -1828,7 +1828,8 @@ static int walk_log_tree(struct btrfs_trans_handle *trans,
|
||||||
int orig_level;
|
int orig_level;
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
level = btrfs_header_level(log->node);
|
level = btrfs_header_level(log->node);
|
||||||
orig_level = level;
|
orig_level = level;
|
||||||
|
@ -3114,9 +3115,11 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
|
||||||
.stage = 0,
|
.stage = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
fs_info->log_root_recovering = 1;
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
BUG_ON(!path);
|
if (!path)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
fs_info->log_root_recovering = 1;
|
||||||
|
|
||||||
trans = btrfs_start_transaction(fs_info->tree_root, 0);
|
trans = btrfs_start_transaction(fs_info->tree_root, 0);
|
||||||
BUG_ON(IS_ERR(trans));
|
BUG_ON(IS_ERR(trans));
|
||||||
|
@ -3124,7 +3127,8 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
|
||||||
wc.trans = trans;
|
wc.trans = trans;
|
||||||
wc.pin = 1;
|
wc.pin = 1;
|
||||||
|
|
||||||
walk_log_tree(trans, log_root_tree, &wc);
|
ret = walk_log_tree(trans, log_root_tree, &wc);
|
||||||
|
BUG_ON(ret);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
key.objectid = BTRFS_TREE_LOG_OBJECTID;
|
key.objectid = BTRFS_TREE_LOG_OBJECTID;
|
||||||
|
@ -3148,8 +3152,7 @@ again:
|
||||||
|
|
||||||
log = btrfs_read_fs_root_no_radix(log_root_tree,
|
log = btrfs_read_fs_root_no_radix(log_root_tree,
|
||||||
&found_key);
|
&found_key);
|
||||||
BUG_ON(!log);
|
BUG_ON(IS_ERR(log));
|
||||||
|
|
||||||
|
|
||||||
tmp_key.objectid = found_key.offset;
|
tmp_key.objectid = found_key.offset;
|
||||||
tmp_key.type = BTRFS_ROOT_ITEM_KEY;
|
tmp_key.type = BTRFS_ROOT_ITEM_KEY;
|
||||||
|
|
Loading…
Reference in a new issue