@@ -173,4 +173,10 @@ static inline void btrfs_i_size_write(struct inode *inode, u64 size)
BTRFS_I(inode)->disk_i_size = size;
}
+/*
+ * This macro documents all the places in the btrfs code where we're failing
+ * to correctly handle a recoverable error condition.
+ */
+#define btrfs_fixable_bug_on(_err) BUG_ON(_err)
+
#endif
@@ -394,13 +394,13 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
*/
atomic_inc(&cb->pending_bios);
ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_csum_one_bio(root, inode, bio, start, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_map_bio(root, WRITE, bio, 0, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
bio_put(bio);
@@ -420,13 +420,13 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
bio_get(bio);
ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_csum_one_bio(root, inode, bio, start, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_map_bio(root, WRITE, bio, 0, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
bio_put(bio);
return 0;
@@ -646,7 +646,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
bio_get(comp_bio);
ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/*
* inc the count before we submit the bio so
@@ -665,7 +665,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
ret = btrfs_map_bio(root, READ, comp_bio,
mirror_num, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
bio_put(comp_bio);
@@ -681,13 +681,13 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
bio_get(comp_bio);
ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM))
btrfs_lookup_bio_sums(root, inode, comp_bio, sums);
ret = btrfs_map_bio(root, READ, comp_bio, mirror_num, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
bio_put(comp_bio);
return 0;
@@ -309,7 +309,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
if (btrfs_block_can_be_shared(root, buf)) {
ret = btrfs_lookup_extent_info(trans, root, buf->start,
buf->len, &refs, &flags);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
BUG_ON(refs == 0);
} else {
refs = 1;
@@ -329,14 +329,14 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) &&
!(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF)) {
ret = btrfs_inc_ref(trans, root, buf, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (root->root_key.objectid ==
BTRFS_TREE_RELOC_OBJECTID) {
ret = btrfs_dec_ref(trans, root, buf, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_inc_ref(trans, root, cow, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
new_flags |= BTRFS_BLOCK_FLAG_FULL_BACKREF;
} else {
@@ -346,14 +346,14 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
ret = btrfs_inc_ref(trans, root, cow, 1);
else
ret = btrfs_inc_ref(trans, root, cow, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (new_flags != 0) {
ret = btrfs_set_disk_extent_flags(trans, root,
buf->start,
buf->len,
new_flags, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
} else {
if (flags & BTRFS_BLOCK_FLAG_FULL_BACKREF) {
@@ -362,9 +362,9 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
ret = btrfs_inc_ref(trans, root, cow, 1);
else
ret = btrfs_inc_ref(trans, root, cow, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_dec_ref(trans, root, buf, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
clean_tree_block(trans, root, buf);
*last_ref = 1;
@@ -3094,7 +3094,7 @@ again:
}
ret = copy_for_split(trans, root, path, l, right, slot, mid, nritems);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (split == 2) {
BUG_ON(num_doubles != 0);
@@ -3307,7 +3307,7 @@ int btrfs_duplicate_item(struct btrfs_trans_handle *trans,
ret = setup_items_for_insert(trans, root, path, new_key, &item_size,
item_size, item_size +
sizeof(struct btrfs_item), 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
memcpy_extent_buffer(leaf,
@@ -3982,7 +3982,7 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
btrfs_set_path_blocking(path);
clean_tree_block(trans, root, leaf);
ret = btrfs_del_leaf(trans, root, path, leaf);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
} else {
int used = leaf_space_used(leaf, 0, nritems);
@@ -4022,7 +4022,7 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
if (btrfs_header_nritems(leaf) == 0) {
path->slots[1] = slot;
ret = btrfs_del_leaf(trans, root, path, leaf);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_buffer(leaf);
} else {
/* if we're still in the path, make sure
@@ -644,11 +644,11 @@ int btrfs_add_delayed_tree_ref(struct btrfs_trans_handle *trans,
*/
ret = add_delayed_ref_head(trans, &head_ref->node, bytenr, num_bytes,
action, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = add_delayed_tree_ref(trans, &ref->node, bytenr, num_bytes,
parent, ref_root, level, action);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
spin_unlock(&delayed_refs->lock);
return 0;
}
@@ -689,11 +689,11 @@ int btrfs_add_delayed_data_ref(struct btrfs_trans_handle *trans,
*/
ret = add_delayed_ref_head(trans, &head_ref->node, bytenr, num_bytes,
action, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = add_delayed_data_ref(trans, &ref->node, bytenr, num_bytes,
parent, ref_root, owner, offset, action);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
spin_unlock(&delayed_refs->lock);
return 0;
}
@@ -718,7 +718,7 @@ int btrfs_add_delayed_extent_op(struct btrfs_trans_handle *trans,
ret = add_delayed_ref_head(trans, &head_ref->node, bytenr,
num_bytes, BTRFS_UPDATE_DELAYED_HEAD,
extent_op->is_data);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
spin_unlock(&delayed_refs->lock);
return 0;
@@ -801,18 +801,18 @@ int btrfs_update_delayed_ref(struct btrfs_trans_handle *trans,
ret = __btrfs_add_delayed_ref(trans, &head_ref->node, bytenr, num_bytes,
(u64)-1, 0, 0, 0,
BTRFS_UPDATE_DELAYED_HEAD, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = __btrfs_add_delayed_ref(trans, &ref->node, bytenr, num_bytes,
parent, ref_root, ref_generation,
owner_objectid, BTRFS_ADD_DELAYED_REF, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = __btrfs_add_delayed_ref(trans, &old_ref->node, bytenr, num_bytes,
orig_parent, orig_ref_root,
orig_ref_generation, owner_objectid,
BTRFS_DROP_DELAYED_REF, pin);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
spin_unlock(&delayed_refs->lock);
return 0;
}
@@ -355,7 +355,7 @@ static int csum_dirty_buffer(struct btrfs_root *root, struct page *page)
eb = alloc_extent_buffer(tree, start, len, page, GFP_NOFS);
ret = btree_read_extent_buffer_pages(root, eb, start + PAGE_CACHE_SIZE,
btrfs_header_generation(eb));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
found_start = btrfs_header_bytenr(eb);
if (found_start != start) {
WARN_ON(1);
@@ -666,7 +666,7 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
ret = btrfs_bio_wq_end_io(BTRFS_I(inode)->root->fs_info,
bio, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (!(rw & REQ_WRITE)) {
/*
@@ -974,7 +974,7 @@ static int find_and_setup_root(struct btrfs_root *tree_root,
&root->root_item, &root->root_key);
if (ret > 0)
return -ENOENT;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
generation = btrfs_root_generation(&root->root_item);
blocksize = btrfs_level_size(root, btrfs_root_level(&root->root_item));
@@ -1501,7 +1501,7 @@ static int transaction_kthread(void *arg)
trans = btrfs_join_transaction(root, 1);
if (transid == trans->transid) {
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
btrfs_end_transaction(trans, root);
}
@@ -1954,20 +1954,20 @@ struct btrfs_root *open_ctree(struct super_block *sb,
blocksize,
generation + 1);
ret = btrfs_recover_log_trees(log_tree_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (sb->s_flags & MS_RDONLY) {
ret = btrfs_commit_super(tree_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
ret = btrfs_find_orphan_roots(tree_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (!(sb->s_flags & MS_RDONLY)) {
ret = btrfs_cleanup_fs_roots(fs_info);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_recover_relocation(tree_root);
if (ret < 0) {
@@ -2402,12 +2402,12 @@ int btrfs_commit_super(struct btrfs_root *root)
trans = btrfs_join_transaction(root, 1);
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/* run commit again to drop the original snapshot */
trans = btrfs_join_transaction(root, 1);
btrfs_commit_transaction(trans, root);
ret = btrfs_write_and_wait_transaction(NULL, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = write_ctree_super(NULL, root, 0);
return ret;
@@ -209,7 +209,7 @@ static int exclude_super_stripes(struct btrfs_root *root,
cache->bytes_super += stripe_len;
ret = add_excluded_extent(root, cache->key.objectid,
stripe_len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) {
@@ -217,13 +217,13 @@ static int exclude_super_stripes(struct btrfs_root *root,
ret = btrfs_rmap_block(&root->fs_info->mapping_tree,
cache->key.objectid, bytenr,
0, &logical, &nr, &stripe_len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
while (nr--) {
cache->bytes_super += stripe_len;
ret = add_excluded_extent(root, logical[nr],
stripe_len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
kfree(logical);
@@ -279,7 +279,7 @@ static u64 add_new_free_space(struct btrfs_block_group_cache *block_group,
total_added += size;
ret = btrfs_add_free_space(block_group, start,
size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
start = extent_end + 1;
} else {
break;
@@ -290,7 +290,7 @@ static u64 add_new_free_space(struct btrfs_block_group_cache *block_group,
size = end - start;
total_added += size;
ret = btrfs_add_free_space(block_group, start, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
return total_added;
@@ -879,10 +879,10 @@ static int convert_extent_item_v0(struct btrfs_trans_handle *trans,
new_size + extra_size, 1);
if (ret < 0)
return ret;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_extend_item(trans, root, path, new_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
item = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item);
@@ -1350,7 +1350,7 @@ int lookup_inline_extent_backref(struct btrfs_trans_handle *trans,
err = ret;
goto out;
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
item_size = btrfs_item_size_nr(leaf, path->slots[0]);
@@ -1490,7 +1490,7 @@ int setup_inline_extent_backref(struct btrfs_trans_handle *trans,
size = btrfs_extent_inline_ref_size(type);
ret = btrfs_extend_item(trans, root, path, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item);
refs = btrfs_extent_refs(leaf, ei);
@@ -1619,7 +1619,7 @@ int update_inline_extent_backref(struct btrfs_trans_handle *trans,
end - ptr - size);
item_size -= size;
ret = btrfs_truncate_item(trans, root, path, item_size, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_mark_buffer_dirty(leaf);
return 0;
@@ -1801,7 +1801,7 @@ static int __btrfs_inc_extent_ref(struct btrfs_trans_handle *trans,
ret = insert_extent_backref(trans, root->fs_info->extent_root,
path, bytenr, parent, root_objectid,
owner, offset, refs_to_add);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
out:
btrfs_free_path(path);
return err;
@@ -2003,7 +2003,7 @@ static int run_one_delayed_ref(struct btrfs_trans_handle *trans,
ret = btrfs_del_csums(trans, root,
node->bytenr,
node->num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
mutex_unlock(&head->mutex);
@@ -2125,7 +2125,7 @@ static noinline int run_clustered_refs(struct btrfs_trans_handle *trans,
ret = run_delayed_extent_op(trans, root,
ref, extent_op);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
kfree(extent_op);
cond_resched();
@@ -2145,7 +2145,7 @@ static noinline int run_clustered_refs(struct btrfs_trans_handle *trans,
ret = run_one_delayed_ref(trans, root, ref, extent_op,
must_insert_reserved);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_put_delayed_ref(ref);
kfree(extent_op);
@@ -2656,7 +2656,7 @@ static int write_one_cache_group(struct btrfs_trans_handle *trans,
ret = btrfs_search_slot(trans, extent_root, &cache->key, path, 0, 1);
if (ret < 0)
goto fail;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
bi = btrfs_item_ptr_offset(leaf, path->slots[0]);
@@ -3030,7 +3030,7 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans,
if (!space_info) {
ret = update_space_info(extent_root->fs_info, flags,
0, 0, &space_info);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
BUG_ON(!space_info);
@@ -3192,7 +3192,7 @@ static int should_retry_reserve(struct btrfs_trans_handle *trans,
trans = btrfs_join_transaction(root, 1);
BUG_ON(IS_ERR(trans));
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 1;
}
@@ -4133,7 +4133,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
ret = remove_extent_backref(trans, extent_root, path,
NULL, refs_to_drop,
is_data);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(extent_root, path);
path->leave_spinning = 1;
@@ -4149,7 +4149,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
(unsigned long long)bytenr);
btrfs_print_leaf(extent_root, path->nodes[0]);
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
extent_slot = path->slots[0];
}
} else {
@@ -4188,7 +4188,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
(unsigned long long)bytenr);
btrfs_print_leaf(extent_root, path->nodes[0]);
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
extent_slot = path->slots[0];
leaf = path->nodes[0];
item_size = btrfs_item_size_nr(leaf, extent_slot);
@@ -4225,7 +4225,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
ret = remove_extent_backref(trans, extent_root, path,
iref, refs_to_drop,
is_data);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
} else {
if (found_extent) {
@@ -4242,12 +4242,12 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
ret = btrfs_del_items(trans, extent_root, path, path->slots[0],
num_to_del);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(extent_root, path);
if (is_data) {
ret = btrfs_del_csums(trans, root, bytenr, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
invalidate_mapping_pages(info->btree_inode->i_mapping,
bytenr >> PAGE_CACHE_SHIFT,
@@ -4255,7 +4255,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
}
ret = update_block_group(trans, root, bytenr, num_bytes, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_free_path(path);
return ret;
@@ -4352,7 +4352,7 @@ void btrfs_free_tree_block(struct btrfs_trans_handle *trans,
parent, root->root_key.objectid,
btrfs_header_level(buf),
BTRFS_DROP_DELAYED_REF, NULL);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (!last_ref)
@@ -4440,12 +4440,12 @@ int btrfs_free_extent(struct btrfs_trans_handle *trans,
ret = btrfs_add_delayed_tree_ref(trans, bytenr, num_bytes,
parent, root_objectid, (int)owner,
BTRFS_DROP_DELAYED_REF, NULL);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
ret = btrfs_add_delayed_data_ref(trans, bytenr, num_bytes,
parent, root_objectid, owner,
offset, BTRFS_DROP_DELAYED_REF, NULL);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
return ret;
}
@@ -4663,7 +4663,7 @@ have_block_group:
(loop > LOOP_FIND_IDEAL &&
atomic_read(&space_info->caching_threads) < 2)) {
ret = cache_block_group(block_group);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
found_uncached_bg = true;
@@ -5088,7 +5088,7 @@ static int alloc_reserved_file_extent(struct btrfs_trans_handle *trans,
path->leave_spinning = 1;
ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path,
ins, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
extent_item = btrfs_item_ptr(leaf, path->slots[0],
@@ -5148,7 +5148,7 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans,
path->leave_spinning = 1;
ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path,
ins, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
extent_item = btrfs_item_ptr(leaf, path->slots[0],
@@ -5225,28 +5225,28 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
if (!caching_ctl) {
BUG_ON(!block_group_cache_done(block_group));
ret = btrfs_remove_free_space(block_group, start, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
mutex_lock(&caching_ctl->mutex);
if (start >= caching_ctl->progress) {
ret = add_excluded_extent(root, start, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else if (start + num_bytes <= caching_ctl->progress) {
ret = btrfs_remove_free_space(block_group,
start, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
num_bytes = caching_ctl->progress - start;
ret = btrfs_remove_free_space(block_group,
start, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
start = caching_ctl->progress;
num_bytes = ins->objectid + ins->offset -
caching_ctl->progress;
ret = add_excluded_extent(root, start, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
mutex_unlock(&caching_ctl->mutex);
@@ -5254,7 +5254,7 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
}
ret = update_reserved_bytes(block_group, ins->offset, 1, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_put_block_group(block_group);
ret = alloc_reserved_file_extent(trans, root, 0, root_objectid,
0, owner, offset, ins, 1);
@@ -5392,7 +5392,7 @@ struct extent_buffer *btrfs_alloc_free_block(struct btrfs_trans_handle *trans,
ins.offset, parent, root_objectid,
level, BTRFS_ADD_DELAYED_EXTENT,
extent_op);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
return buf;
}
@@ -5530,7 +5530,7 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
eb->start, eb->len,
&wc->refs[level],
&wc->flags[level]);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
BUG_ON(wc->refs[level] == 0);
}
@@ -5549,12 +5549,12 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
if (!(wc->flags[level] & flag)) {
BUG_ON(!path->locks[level]);
ret = btrfs_inc_ref(trans, root, eb, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_dec_ref(trans, root, eb, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_set_disk_extent_flags(trans, root, eb->start,
eb->len, flag, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
wc->flags[level] |= flag;
}
@@ -5626,7 +5626,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
ret = btrfs_lookup_extent_info(trans, root, bytenr, blocksize,
&wc->refs[level - 1],
&wc->flags[level - 1]);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
BUG_ON(wc->refs[level - 1] == 0);
*lookup_info = 0;
@@ -5693,7 +5693,7 @@ skip:
ret = btrfs_free_extent(trans, root, bytenr, blocksize, parent,
root->root_key.objectid, level - 1, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_tree_unlock(next);
free_extent_buffer(next);
@@ -5751,7 +5751,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
eb->start, eb->len,
&wc->refs[level],
&wc->flags[level]);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
BUG_ON(wc->refs[level] == 0);
if (wc->refs[level] == 1) {
btrfs_tree_unlock(eb);
@@ -5770,7 +5770,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
ret = btrfs_dec_ref(trans, root, eb, 1);
else
ret = btrfs_dec_ref(trans, root, eb, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/* make block locked assertion in clean_tree_block happy */
if (!path->locks[level] &&
@@ -5941,7 +5941,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root,
path->nodes[level]->len,
&wc->refs[level],
&wc->flags[level]);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
BUG_ON(wc->refs[level] == 0);
if (level == root_item->drop_level)
@@ -5991,7 +5991,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root,
ret = btrfs_update_root(trans, tree_root,
&root->root_key,
root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_end_transaction_throttle(trans, tree_root);
trans = btrfs_start_transaction(tree_root, 0);
@@ -6003,7 +6003,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root,
BUG_ON(err);
ret = btrfs_del_root(trans, tree_root, &root->root_key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID) {
ret = btrfs_find_last_root(tree_root, root->root_key.objectid,
@@ -6012,7 +6012,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root,
if (ret > 0) {
ret = btrfs_del_orphan_item(trans, tree_root,
root->root_key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
@@ -6798,7 +6798,7 @@ next:
root->root_key.objectid,
trans->transid,
key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_free_extent(trans, root,
extent_key->objectid,
@@ -6807,7 +6807,7 @@ next:
btrfs_header_owner(leaf),
btrfs_header_generation(leaf),
key.objectid, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(root, path);
key.offset += num_bytes;
@@ -6825,7 +6825,7 @@ next:
ret = btrfs_drop_extents(trans, root, inode, key.offset,
key.offset + num_bytes,
key.offset, &alloc_hint);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
for (i = 0; i < nr_extents; i++) {
if (ext_offset >= new_extents[i].num_bytes) {
@@ -6838,7 +6838,7 @@ next:
ret = btrfs_insert_empty_item(trans, root,
path, &key,
sizeof(*fi));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
fi = btrfs_item_ptr(leaf, path->slots[0],
@@ -6877,7 +6877,7 @@ next:
leaf->start,
root->root_key.objectid,
trans->transid, key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(root, path);
inode_add_bytes(inode, extent_len);
@@ -7086,14 +7086,14 @@ static noinline int replace_extents_in_leaf(struct btrfs_trans_handle *trans,
leaf->start,
root->root_key.objectid,
trans->transid, key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_free_extent(trans, root,
bytenr, num_bytes, leaf->start,
btrfs_header_owner(leaf),
btrfs_header_generation(leaf),
key.objectid, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
cond_resched();
}
kfree(new_extent);
@@ -7125,7 +7125,7 @@ int btrfs_free_reloc_root(struct btrfs_trans_handle *trans,
ret = btrfs_update_root(trans, root->fs_info->tree_root,
&reloc_root->root_key,
&reloc_root->root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
return 0;
}
@@ -7160,7 +7160,7 @@ int btrfs_drop_dead_reloc_roots(struct btrfs_root *root)
nr = trans->blocks_used;
ret = btrfs_end_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_btree_balance_dirty(root, nr);
}
@@ -7168,12 +7168,12 @@ int btrfs_drop_dead_reloc_roots(struct btrfs_root *root)
ret = btrfs_del_root(trans, root->fs_info->tree_root,
&reloc_root->root_key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
mutex_unlock(&root->fs_info->drop_mutex);
nr = trans->blocks_used;
ret = btrfs_end_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_btree_balance_dirty(root, nr);
kfree(prev_root);
@@ -7202,7 +7202,7 @@ int btrfs_cleanup_reloc_trees(struct btrfs_root *root)
mutex_lock(&root->fs_info->tree_reloc_mutex);
ret = btrfs_find_dead_roots(root, BTRFS_TREE_RELOC_OBJECTID, NULL);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
found = !list_empty(&root->fs_info->dead_reloc_roots);
mutex_unlock(&root->fs_info->tree_reloc_mutex);
@@ -7210,7 +7210,7 @@ int btrfs_cleanup_reloc_trees(struct btrfs_root *root)
trans = btrfs_start_transaction(root, 1);
BUG_ON(!trans);
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
location.objectid = BTRFS_DATA_RELOC_TREE_OBJECTID;
@@ -7241,7 +7241,7 @@ static noinline int init_reloc_tree(struct btrfs_trans_handle *trans,
ret = btrfs_copy_root(trans, root, root->commit_root,
&eb, BTRFS_TREE_RELOC_OBJECTID);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
root_key.objectid = BTRFS_TREE_RELOC_OBJECTID;
root_key.offset = root->root_key.objectid;
@@ -7258,7 +7258,7 @@ static noinline int init_reloc_tree(struct btrfs_trans_handle *trans,
ret = btrfs_insert_root(trans, root->fs_info->tree_root,
&root_key, root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
kfree(root_item);
reloc_root = btrfs_read_fs_root_no_radix(root->fs_info->tree_root,
@@ -7313,7 +7313,7 @@ static noinline int relocate_one_path(struct btrfs_trans_handle *trans,
if (!root->ref_cows) {
path->lowest_level = lowest_level;
ret = btrfs_search_slot(trans, root, first_key, path, 0, 1);
- BUG_ON(ret < 0);
+ btrfs_fixable_bug_on(ret < 0);
path->lowest_level = 0;
btrfs_release_path(root, path);
return 0;
@@ -7321,7 +7321,7 @@ static noinline int relocate_one_path(struct btrfs_trans_handle *trans,
mutex_lock(&root->fs_info->tree_reloc_mutex);
ret = init_reloc_tree(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
reloc_root = root->reloc_root;
shared_level = ref_path->shared_level;
@@ -7338,7 +7338,7 @@ static noinline int relocate_one_path(struct btrfs_trans_handle *trans,
path->lowest_level = lowest_level;
ret = btrfs_search_slot(trans, reloc_root, first_key, path,
0, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
for (level = lowest_level; level < BTRFS_MAX_LEVEL; level++) {
eb = path->nodes[level];
if (!eb || eb == reloc_root->node)
@@ -7354,13 +7354,13 @@ static noinline int relocate_one_path(struct btrfs_trans_handle *trans,
eb = path->nodes[0];
ret = replace_extents_in_leaf(trans, reloc_root, eb,
group, reloc_inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_release_path(reloc_root, path);
} else {
ret = btrfs_merge_path(trans, reloc_root, keys, nodes,
lowest_level);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/*
@@ -7368,17 +7368,17 @@ static noinline int relocate_one_path(struct btrfs_trans_handle *trans,
* the reloc tree.
*/
ret = btrfs_merge_path(trans, root, keys, nodes, lowest_level);
- BUG_ON(ret < 0);
+ btrfs_fixable_bug_on(ret < 0);
if (ref_path->owner_objectid >= BTRFS_FIRST_FREE_OBJECTID) {
ret = btrfs_search_slot(trans, reloc_root, first_key, path,
0, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
extent_buffer_get(path->nodes[0]);
eb = path->nodes[0];
btrfs_release_path(reloc_root, path);
ret = invalidate_extent_cache(reloc_root, eb, group, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_buffer(eb);
}
@@ -7397,7 +7397,7 @@ static noinline int relocate_tree_block(struct btrfs_trans_handle *trans,
ret = relocate_one_path(trans, root, path, first_key,
ref_path, NULL, NULL);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -7972,7 +7972,7 @@ int btrfs_read_block_groups(struct btrfs_root *root)
ret = update_space_info(info, cache->flags, found_key.offset,
btrfs_block_group_used(&cache->item),
&space_info);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
cache->space_info = space_info;
spin_lock(&cache->space_info->lock);
cache->space_info->bytes_readonly += cache->bytes_super;
@@ -7981,7 +7981,7 @@ int btrfs_read_block_groups(struct btrfs_root *root)
__link_block_group(space_info, cache);
ret = btrfs_add_block_group_cache(root->fs_info, cache);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
set_avail_alloc_bits(root->fs_info, cache->flags);
if (btrfs_chunk_readonly(root, cache->key.objectid))
@@ -8062,7 +8062,7 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
ret = update_space_info(root->fs_info, cache->flags, size, bytes_used,
&cache->space_info);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
spin_lock(&cache->space_info->lock);
cache->space_info->bytes_readonly += cache->bytes_super;
@@ -8071,11 +8071,11 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
__link_block_group(cache->space_info, cache);
ret = btrfs_add_block_group_cache(root->fs_info, cache);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_insert_item(trans, extent_root, &cache->key, &cache->item,
sizeof(cache->item));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
set_avail_alloc_bits(extent_root->fs_info, type);
@@ -58,7 +58,7 @@ int btrfs_insert_file_extent(struct btrfs_trans_handle *trans,
sizeof(*item));
if (ret < 0)
goto out;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
item = btrfs_item_ptr(leaf, path->slots[0],
struct btrfs_file_extent_item);
@@ -492,7 +492,7 @@ static noinline int truncate_one_csum(struct btrfs_trans_handle *trans,
u32 new_size = (bytenr - key->offset) >> blocksize_bits;
new_size *= csum_size;
ret = btrfs_truncate_item(trans, root, path, new_size, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else if (key->offset >= bytenr && csum_end > end_byte &&
end_byte > key->offset) {
/*
@@ -505,11 +505,11 @@ static noinline int truncate_one_csum(struct btrfs_trans_handle *trans,
new_size *= csum_size;
ret = btrfs_truncate_item(trans, root, path, new_size, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
key->offset = end_byte;
ret = btrfs_set_item_key_safe(trans, root, path, key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
BUG();
}
@@ -571,7 +571,7 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
/* delete the entire item, it is inside our range */
if (key.offset >= bytenr && csum_end <= end_byte) {
ret = btrfs_del_item(trans, root, path);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (key.offset == bytenr)
break;
} else if (key.offset < bytenr && csum_end > end_byte) {
@@ -619,7 +619,7 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
} else {
ret = truncate_one_csum(trans, root, path,
&key, bytenr, len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (key.offset < bytenr)
break;
}
@@ -753,7 +753,7 @@ again:
goto insert;
ret = btrfs_extend_item(trans, root, path, diff);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
goto csum;
}
@@ -221,7 +221,7 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
split->bdev = em->bdev;
split->flags = flags;
ret = add_extent_mapping(em_tree, split);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_map(split);
split = split2;
split2 = NULL;
@@ -246,7 +246,7 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
}
ret = add_extent_mapping(em_tree, split);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_map(split);
split = NULL;
}
@@ -404,7 +404,7 @@ next_slot:
root->root_key.objectid,
new_key.objectid,
start - extent_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
*hint_byte = disk_bytenr;
}
key.offset = start;
@@ -479,7 +479,7 @@ next_slot:
root->root_key.objectid,
key.objectid, key.offset -
extent_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
inode_sub_bytes(inode,
extent_end - key.offset);
*hint_byte = disk_bytenr;
@@ -495,7 +495,7 @@ next_slot:
ret = btrfs_del_items(trans, root, path, del_slot,
del_nr);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
del_nr = 0;
del_slot = 0;
@@ -509,7 +509,7 @@ next_slot:
if (del_nr > 0) {
ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_free_path(path);
@@ -685,7 +685,7 @@ again:
ret = btrfs_inc_extent_ref(trans, root, bytenr, num_bytes, 0,
root->root_key.objectid,
inode->i_ino, orig_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (split == start) {
key.offset = start;
@@ -712,7 +712,7 @@ again:
ret = btrfs_free_extent(trans, root, bytenr, num_bytes,
0, root->root_key.objectid,
inode->i_ino, orig_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
other_start = 0;
other_end = start;
@@ -729,7 +729,7 @@ again:
ret = btrfs_free_extent(trans, root, bytenr, num_bytes,
0, root->root_key.objectid,
inode->i_ino, orig_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (del_nr == 0) {
fi = btrfs_item_ptr(leaf, path->slots[0],
@@ -747,7 +747,7 @@ again:
btrfs_mark_buffer_dirty(leaf);
ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
out:
btrfs_free_path(path);
@@ -942,7 +942,7 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
pinned[0] = grab_cache_page(inode->i_mapping, first_index);
if (!PageUptodate(pinned[0])) {
ret = btrfs_readpage(NULL, pinned[0]);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
wait_on_page_locked(pinned[0]);
} else {
unlock_page(pinned[0]);
@@ -952,7 +952,7 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
pinned[1] = grab_cache_page(inode->i_mapping, last_index);
if (!PageUptodate(pinned[1])) {
ret = btrfs_readpage(NULL, pinned[1]);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
wait_on_page_locked(pinned[1]);
} else {
unlock_page(pinned[1]);
@@ -144,7 +144,7 @@ static noinline int insert_inline_extent(struct btrfs_trans_handle *trans,
inode_add_bytes(inode, size);
ret = btrfs_insert_empty_item(trans, root, path, &key,
datasize);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (ret) {
err = ret;
goto fail;
@@ -244,14 +244,14 @@ static noinline int cow_file_range_inline(struct btrfs_trans_handle *trans,
ret = btrfs_drop_extents(trans, inode, start, aligned_end,
&hint_byte, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (isize > actual_end)
inline_len = min_t(u64, isize, actual_end);
ret = insert_inline_extent(trans, root, inode, start,
inline_len, compressed_size,
compressed_pages);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_delalloc_release_metadata(inode, end + 1 - start);
btrfs_drop_extent_cache(inode, start, aligned_end - 1, 0);
return 0;
@@ -667,7 +667,7 @@ retry:
async_extent->ram_size,
ins.offset,
BTRFS_ORDERED_COMPRESSED);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/*
* clear dirty, set writeback and unlock the pages.
@@ -689,7 +689,7 @@ retry:
ins.offset, async_extent->pages,
async_extent->nr_pages);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
alloc_hint = ins.objectid + ins.offset;
kfree(async_extent);
cond_resched();
@@ -812,7 +812,7 @@ static noinline int cow_file_range(struct inode *inode,
ret = btrfs_reserve_extent(trans, root, cur_alloc_size,
root->sectorsize, 0, alloc_hint,
(u64)-1, &ins, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
em = alloc_extent_map(GFP_NOFS);
em->start = start;
@@ -840,13 +840,13 @@ static noinline int cow_file_range(struct inode *inode,
cur_alloc_size = ins.offset;
ret = btrfs_add_ordered_extent(inode, start, ins.objectid,
ram_size, cur_alloc_size, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (root->root_key.objectid ==
BTRFS_DATA_RELOC_TREE_OBJECTID) {
ret = btrfs_reloc_clone_csums(inode, start,
cur_alloc_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (disk_num_bytes < cur_alloc_size)
@@ -1149,7 +1149,7 @@ out_check:
ret = cow_file_range(inode, locked_page, cow_start,
found_key.offset - 1, page_started,
nr_written, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
cow_start = (u64)-1;
}
@@ -1183,13 +1183,13 @@ out_check:
ret = btrfs_add_ordered_extent(inode, cur_offset, disk_bytenr,
num_bytes, num_bytes, type);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (root->root_key.objectid ==
BTRFS_DATA_RELOC_TREE_OBJECTID) {
ret = btrfs_reloc_clone_csums(inode, cur_offset,
num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
extent_clear_unlock_delalloc(inode, &BTRFS_I(inode)->io_tree,
@@ -1208,11 +1208,11 @@ out_check:
if (cow_start != (u64)-1) {
ret = cow_file_range(inode, locked_page, cow_start, end,
page_started, nr_written, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = btrfs_end_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_free_path(path);
return 0;
}
@@ -1392,7 +1392,7 @@ static int __btrfs_submit_bio_start(struct inode *inode, int rw,
int ret = 0;
ret = btrfs_csum_one_bio(root, inode, bio, 0, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -1427,7 +1427,7 @@ static int btrfs_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (!(rw & REQ_WRITE)) {
if (bio_flags & EXTENT_BIO_COMPRESSED) {
@@ -1603,13 +1603,13 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
*/
ret = btrfs_drop_extents(trans, inode, file_pos, file_pos + num_bytes,
&hint, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ins.objectid = inode->i_ino;
ins.offset = file_pos;
ins.type = BTRFS_EXTENT_DATA_KEY;
ret = btrfs_insert_empty_item(trans, root, path, &ins, sizeof(*fi));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
fi = btrfs_item_ptr(leaf, path->slots[0],
struct btrfs_file_extent_item);
@@ -1637,7 +1637,7 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
ret = btrfs_alloc_reserved_file_extent(trans, root,
root->root_key.objectid,
inode->i_ino, file_pos, &ins);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_free_path(path);
return 0;
@@ -1677,7 +1677,7 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
btrfs_set_trans_block_group(trans, inode);
trans->block_rsv = &root->fs_info->delalloc_block_rsv;
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
goto out;
}
@@ -1698,7 +1698,7 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
ordered_extent->file_offset,
ordered_extent->file_offset +
ordered_extent->len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
ret = insert_reserved_file_extent(trans, inode,
ordered_extent->file_offset,
@@ -1711,7 +1711,7 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
unpin_extent_cache(&BTRFS_I(inode)->extent_tree,
ordered_extent->file_offset,
ordered_extent->len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
unlock_extent_cached(io_tree, ordered_extent->file_offset,
ordered_extent->file_offset +
@@ -1722,7 +1722,7 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
btrfs_ordered_update_i_size(inode, 0, ordered_extent);
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
out:
btrfs_delalloc_release_metadata(inode, ordered_extent->len);
if (trans)
@@ -2060,7 +2060,7 @@ void btrfs_orphan_post_snapshot(struct btrfs_trans_handle *trans,
ret = btrfs_block_rsv_migrate(&pending->block_rsv,
root->orphan_block_rsv,
num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/* setup orphan block reservation for the snapshot */
@@ -2073,14 +2073,14 @@ void btrfs_orphan_post_snapshot(struct btrfs_trans_handle *trans,
num_bytes = root->orphan_block_rsv->size;
ret = btrfs_block_rsv_migrate(&pending->block_rsv,
block_rsv, num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
#if 0
/* insert orphan item for the snapshot */
WARN_ON(!root->orphan_item_inserted);
ret = btrfs_insert_orphan_item(trans, root->fs_info->tree_root,
snap->root_key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
snap->orphan_item_inserted = 1;
#endif
}
@@ -2108,7 +2108,7 @@ void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans,
btrfs_root_refs(&root->root_item) > 0) {
ret = btrfs_del_orphan_item(trans, root->fs_info->tree_root,
root->root_key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
root->orphan_item_inserted = 0;
}
@@ -2177,20 +2177,20 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
/* grab metadata reservation from transaction handle */
if (reserve) {
ret = btrfs_orphan_reserve_metadata(trans, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/* insert an orphan item to track this unlinked/truncated file */
if (insert >= 1) {
ret = btrfs_insert_orphan_item(trans, root, inode->i_ino);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/* insert an orphan item to track subvolume contains orphan files */
if (insert >= 2) {
ret = btrfs_insert_orphan_item(trans, root->fs_info->tree_root,
root->root_key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
return 0;
}
@@ -2220,7 +2220,7 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)
if (trans && delete_item) {
ret = btrfs_del_orphan_item(trans, root, inode->i_ino);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (release_rsv)
@@ -2651,7 +2651,7 @@ int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
ret = btrfs_del_dir_entries_in_log(trans, root, name, name_len,
dir, index);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
err:
btrfs_free_path(path);
if (ret)
@@ -2868,11 +2868,11 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
ret = btrfs_unlink_inode(trans, root, dir, dentry->d_inode,
dentry->d_name.name, dentry->d_name.len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (inode->i_nlink == 0) {
ret = btrfs_orphan_add(trans, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
nr = trans->blocks_used;
@@ -2905,7 +2905,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
btrfs_dir_item_key_to_cpu(leaf, di, &key);
WARN_ON(key.type != BTRFS_ROOT_ITEM_KEY || key.objectid != objectid);
ret = btrfs_delete_one_dir_name(trans, root, path, di);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(root, path);
ret = btrfs_del_root_ref(trans, root->fs_info->tree_root,
@@ -2931,13 +2931,13 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
btrfs_dir_item_key_to_cpu(leaf, di, &key);
WARN_ON(key.type != BTRFS_ROOT_ITEM_KEY || key.objectid != objectid);
ret = btrfs_delete_one_dir_name(trans, root, path, di);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(root, path);
btrfs_i_size_write(dir, dir->i_size - name_len * 2);
dir->i_mtime = dir->i_ctime = CURRENT_TIME;
ret = btrfs_update_inode(trans, root, dir);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_free_path(path);
return 0;
@@ -3118,7 +3118,7 @@ next_node:
* csum items from this inode at an offset >= new_size
*/
ret = btrfs_del_leaf(trans, root, path, leaf_start);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (root->ref_cows && leaf_gen < trans->transid) {
ref = btrfs_alloc_leaf_ref(root, 0);
@@ -3321,7 +3321,7 @@ search_again:
btrfs_file_extent_calc_inline_size(size);
ret = btrfs_truncate_item(trans, root, path,
size, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else if (root->ref_cows) {
inode_sub_bytes(inode, item_end + 1 -
found_key.offset);
@@ -3350,7 +3350,7 @@ delete:
extent_num_bytes, 0,
btrfs_header_owner(leaf),
inode->i_ino, extent_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (found_type == BTRFS_INODE_ITEM_KEY)
@@ -3366,7 +3366,7 @@ delete:
ret = btrfs_del_items(trans, root, path,
pending_del_slot,
pending_del_nr);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
pending_del_nr = 0;
}
btrfs_release_path(root, path);
@@ -3379,7 +3379,7 @@ out:
if (pending_del_nr) {
ret = btrfs_del_items(trans, root, path, pending_del_slot,
pending_del_nr);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_free_path(path);
return err;
@@ -3592,7 +3592,7 @@ static int btrfs_setattr_size(struct inode *inode, struct iattr *attr)
btrfs_set_trans_block_group(trans, inode);
ret = btrfs_orphan_add(trans, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
nr = trans->blocks_used;
btrfs_end_transaction(trans, root);
@@ -3615,10 +3615,10 @@ static int btrfs_setattr_size(struct inode *inode, struct iattr *attr)
BUG_ON(!trans->block_rsv);
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (inode->i_nlink > 0) {
ret = btrfs_orphan_del(trans, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
nr = trans->blocks_used;
btrfs_end_transaction(trans, root);
@@ -3636,7 +3636,7 @@ static int btrfs_setattr_size(struct inode *inode, struct iattr *attr)
/* we don't support swapfiles, so vmtruncate shouldn't fail */
ret = vmtruncate(inode, attr->ia_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -3708,7 +3708,7 @@ void btrfs_evict_inode(struct inode *inode)
if (ret) {
BUG_ON(ret != -EAGAIN);
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
continue;
}
@@ -3725,7 +3725,7 @@ void btrfs_evict_inode(struct inode *inode)
if (ret == 0) {
ret = btrfs_orphan_del(trans, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
nr = trans->blocks_used;
@@ -4566,7 +4566,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
ret = btrfs_insert_dir_item(trans, root, name, name_len,
parent_inode->i_ino, &key,
btrfs_inode_type(inode), index);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_i_size_write(parent_inode, parent_inode->i_size +
name_len * 2);
@@ -5089,7 +5089,7 @@ again:
ret = uncompress_inline(path, inode, page,
pg_offset,
extent_offset, item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
map = kmap(page);
read_extent_buffer(leaf, map + pg_offset, ptr,
@@ -5635,7 +5635,7 @@ static int __btrfs_submit_bio_start_direct_io(struct inode *inode, int rw,
int ret;
struct btrfs_root *root = BTRFS_I(inode)->root;
ret = btrfs_csum_one_bio(root, inode, bio, offset, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -6158,7 +6158,7 @@ static void btrfs_truncate(struct inode *inode)
if (ret) {
BUG_ON(ret != -EAGAIN);
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
trans = NULL;
continue;
}
@@ -6170,7 +6170,7 @@ static void btrfs_truncate(struct inode *inode)
break;
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
nr = trans->blocks_used;
btrfs_end_transaction(trans, root);
@@ -6180,15 +6180,15 @@ static void btrfs_truncate(struct inode *inode)
if (ret == 0 && inode->i_nlink > 0) {
ret = btrfs_orphan_del(trans, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
nr = trans->blocks_used;
ret = btrfs_end_transaction_throttle(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_btree_balance_dirty(root, nr);
}
@@ -6517,7 +6517,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
old_dentry->d_name.name,
old_dentry->d_name.len);
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (new_inode) {
new_inode->i_ctime = CURRENT_TIME;
@@ -6535,17 +6535,17 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
new_dentry->d_name.name,
new_dentry->d_name.len);
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (new_inode->i_nlink == 0) {
ret = btrfs_orphan_add(trans, new_dentry->d_inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
ret = btrfs_add_link(trans, new_dir, old_inode,
new_dentry->d_name.name,
new_dentry->d_name.len, 0, index);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (old_inode->i_ino != BTRFS_FIRST_FREE_OBJECTID) {
btrfs_log_new_name(trans, old_inode, old_dir,
@@ -6786,7 +6786,7 @@ int btrfs_prealloc_file_range(struct inode *inode, int mode,
ins.offset, ins.offset,
ins.offset, 0, 0, 0,
BTRFS_FILE_EXTENT_PREALLOC);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_drop_extent_cache(inode, cur_offset,
cur_offset + ins.offset -1, 0);
@@ -6808,7 +6808,7 @@ int btrfs_prealloc_file_range(struct inode *inode, int mode,
}
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_end_transaction(trans, root);
}
@@ -203,7 +203,7 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg)
BUG_ON(!trans);
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_update_iflags(inode);
inode->i_ctime = CURRENT_TIME;
@@ -318,7 +318,7 @@ static noinline int create_subvol(struct btrfs_root *root,
* insert the directory item
*/
ret = btrfs_set_inode_index(dir, &index);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_insert_dir_item(trans, root,
name, namelen, dir->i_ino, &key,
@@ -328,13 +328,13 @@ static noinline int create_subvol(struct btrfs_root *root,
btrfs_i_size_write(dir, dir->i_size + namelen * 2);
ret = btrfs_update_inode(trans, root, dir);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_add_root_ref(trans, root->fs_info->tree_root,
objectid, root->root_key.objectid,
dir->i_ino, index, name, namelen);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
d_instantiate(dentry, btrfs_lookup_dentry(dir, dentry));
fail:
@@ -369,12 +369,12 @@ static int create_snapshot(struct btrfs_root *root, struct dentry *dentry)
}
ret = btrfs_snap_reserve_metadata(trans, pending_snapshot);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
list_add(&pending_snapshot->list,
&trans->transaction->pending_snapshots);
ret = btrfs_commit_transaction(trans, root->fs_info->extent_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = pending_snapshot->error;
if (ret)
@@ -1288,7 +1288,7 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file,
dest->root_key.objectid,
dentry->d_name.name,
dentry->d_name.len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_record_root_in_trans(trans, dest);
@@ -1301,11 +1301,11 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file,
ret = btrfs_insert_orphan_item(trans,
root->fs_info->tree_root,
dest->root_key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
inode->i_flags |= S_DEAD;
out_up_write:
up_write(&root->fs_info->subvol_sem);
@@ -1633,11 +1633,11 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
new_key.offset,
new_key.offset + datal,
&hint_byte, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_insert_empty_item(trans, root, path,
&new_key, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
slot = path->slots[0];
@@ -1663,7 +1663,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
root->root_key.objectid,
inode->i_ino,
new_key.offset - datao);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
} else if (type == BTRFS_FILE_EXTENT_INLINE) {
u64 skip = 0;
@@ -1688,11 +1688,11 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
new_key.offset,
new_key.offset + datal,
&hint_byte, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_insert_empty_item(trans, root, path,
&new_key, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (skip) {
u32 start =
@@ -1727,7 +1727,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
BTRFS_I(inode)->flags = BTRFS_I(src)->flags;
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_end_transaction(trans, root);
}
next:
@@ -1275,7 +1275,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
/* called by btrfs_init_reloc_root */
ret = btrfs_copy_root(trans, root, root->commit_root, &eb,
BTRFS_TREE_RELOC_OBJECTID);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_set_root_last_snapshot(&root->root_item,
trans->transid - 1);
@@ -1289,7 +1289,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
*/
ret = btrfs_copy_root(trans, root, root->node, &eb,
BTRFS_TREE_RELOC_OBJECTID);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
memcpy(root_item, &root->root_item, sizeof(*root_item));
@@ -1309,7 +1309,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
ret = btrfs_insert_root(trans, root->fs_info->tree_root,
&root_key, root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
kfree(root_item);
reloc_root = btrfs_read_fs_root_no_radix(root->fs_info->tree_root,
@@ -1386,7 +1386,7 @@ int btrfs_update_reloc_root(struct btrfs_trans_handle *trans,
ret = btrfs_update_root(trans, root->fs_info->tree_root,
&reloc_root->root_key, root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -1598,12 +1598,12 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
num_bytes, parent,
btrfs_header_owner(leaf),
key.objectid, key.offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_free_extent(trans, root, bytenr, num_bytes,
parent, btrfs_header_owner(leaf),
key.objectid, key.offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (dirty)
btrfs_mark_buffer_dirty(leaf);
@@ -1672,7 +1672,7 @@ again:
if (cow) {
ret = btrfs_cow_block(trans, dest, eb, NULL, 0, &eb);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_set_lock_blocking(eb);
@@ -1728,7 +1728,7 @@ again:
if (cow) {
ret = btrfs_cow_block(trans, dest, eb, parent,
slot, &eb);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_set_lock_blocking(eb);
@@ -1753,7 +1753,7 @@ again:
path->lowest_level = level;
ret = btrfs_search_slot(trans, src, &key, path, 0, 1);
path->lowest_level = 0;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/*
* swap blocks in fs tree and reloc tree.
@@ -1771,21 +1771,21 @@ again:
ret = btrfs_inc_extent_ref(trans, src, old_bytenr, blocksize,
path->nodes[level]->start,
src->root_key.objectid, level - 1, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_inc_extent_ref(trans, dest, new_bytenr, blocksize,
0, dest->root_key.objectid, level - 1,
0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_free_extent(trans, src, new_bytenr, blocksize,
path->nodes[level]->start,
src->root_key.objectid, level - 1, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_free_extent(trans, dest, old_bytenr, blocksize,
0, dest->root_key.objectid, level - 1,
0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_unlock_up_safe(path, 0);
@@ -2036,7 +2036,7 @@ static noinline_for_stack int merge_reloc_root(struct reloc_control *rc,
if (ret) {
BUG_ON(ret != -EAGAIN);
ret = btrfs_commit_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
continue;
}
@@ -2218,7 +2218,7 @@ again:
BUG_ON(root->reloc_root != reloc_root);
ret = merge_reloc_root(rc, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
list_del_init(&reloc_root->root_list);
}
@@ -2465,7 +2465,7 @@ static int do_relocation(struct btrfs_trans_handle *trans,
if (!lowest) {
ret = btrfs_bin_search(upper->eb, key,
upper->level, &slot);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
bytenr = btrfs_node_blockptr(upper->eb, slot);
if (node->eb->start == bytenr)
goto next;
@@ -2496,7 +2496,7 @@ static int do_relocation(struct btrfs_trans_handle *trans,
} else {
ret = btrfs_bin_search(upper->eb, key, upper->level,
&slot);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
bytenr = btrfs_node_blockptr(upper->eb, slot);
@@ -2535,10 +2535,10 @@ static int do_relocation(struct btrfs_trans_handle *trans,
upper->eb->start,
btrfs_header_owner(upper->eb),
node->level, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_drop_subtree(trans, root, eb, upper->eb);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
next:
if (!upper->pending)
@@ -3182,7 +3182,7 @@ static int block_use_full_backref(struct reloc_control *rc,
ret = btrfs_lookup_extent_info(NULL, rc->extent_root,
eb->start, eb->len, NULL, &flags);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (flags & BTRFS_BLOCK_FLAG_FULL_BACKREF)
ret = 1;
@@ -3622,7 +3622,7 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
if (item_size >= sizeof(*ei)) {
flags = btrfs_extent_flags(path->nodes[0], ei);
ret = check_extent_flags(flags);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
#ifdef BTRFS_COMPAT_EXTENT_TREE_V0
@@ -3696,7 +3696,7 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
if (rc->commit_transaction) {
rc->commit_transaction = 0;
ret = btrfs_commit_transaction(trans, rc->extent_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
nr = trans->blocks_used;
btrfs_end_transaction_throttle(trans, rc->extent_root);
@@ -3952,10 +3952,10 @@ static noinline_for_stack int mark_garbage_root(struct btrfs_root *root)
btrfs_set_root_refs(&root->root_item, 0);
ret = btrfs_update_root(trans, root->fs_info->tree_root,
&root->root_key, &root->root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_end_transaction(trans, root->fs_info->tree_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -4196,7 +4196,7 @@ void btrfs_reloc_cow_block(struct btrfs_trans_handle *trans,
if (level == 0 && first_cow && rc->stage == UPDATE_DATA_PTRS) {
ret = replace_file_extents(trans, rc, root, cow);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
@@ -4257,7 +4257,7 @@ void btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
ret = btrfs_block_rsv_migrate(&pending->block_rsv,
rc->block_rsv,
rc->nodes_relocated);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
new_root = pending->snap;
@@ -4269,6 +4269,6 @@ void btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
if (rc->create_reloc_tree) {
ret = clone_backref_node(trans, rc, root, reloc_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
@@ -191,7 +191,7 @@ again:
wait_current_trans(root);
ret = join_transaction(root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
cur_trans = root->fs_info->running_transaction;
cur_trans->use_count++;
@@ -586,11 +586,11 @@ static int update_cowonly_root(struct btrfs_trans_handle *trans,
ret = btrfs_update_root(trans, tree_root,
&root->root_key,
&root->root_item);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
old_root_used = btrfs_root_used(&root->root_item);
ret = btrfs_write_dirty_block_groups(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (root != root->fs_info->extent_root)
@@ -611,7 +611,7 @@ static noinline int commit_cowonly_roots(struct btrfs_trans_handle *trans,
int ret;
ret = btrfs_run_delayed_refs(trans, root, (unsigned long)-1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
eb = btrfs_lock_root_node(fs_info->tree_root);
btrfs_cow_block(trans, fs_info->tree_root, eb, NULL, 0, &eb);
@@ -619,7 +619,7 @@ static noinline int commit_cowonly_roots(struct btrfs_trans_handle *trans,
free_extent_buffer(eb);
ret = btrfs_run_delayed_refs(trans, root, (unsigned long)-1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
while (!list_empty(&fs_info->dirty_cowonly_roots)) {
next = fs_info->dirty_cowonly_roots.next;
@@ -795,19 +795,19 @@ int btrfs_drop_dead_root(struct btrfs_root *root)
nr = trans->blocks_used;
ret = btrfs_end_transaction(trans, tree_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_btree_balance_dirty(tree_root, nr);
cond_resched();
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_del_root(trans, tree_root, &root->root_key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
nr = trans->blocks_used;
ret = btrfs_end_transaction(trans, tree_root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_buffer(root->node);
free_extent_buffer(root->commit_root);
@@ -880,17 +880,17 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
* insert the directory item
*/
ret = btrfs_set_inode_index(parent_inode, &index);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_insert_dir_item(trans, parent_root,
dentry->d_name.name, dentry->d_name.len,
parent_inode->i_ino, &key,
BTRFS_FT_DIR, index);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_i_size_write(parent_inode, parent_inode->i_size +
dentry->d_name.len * 2);
ret = btrfs_update_inode(trans, parent_root, parent_inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
record_root_in_trans(trans, root);
btrfs_set_root_last_snapshot(&root->root_item, trans->transid);
@@ -910,7 +910,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
ret = btrfs_insert_root(trans, tree_root, &key, new_root_item);
btrfs_tree_unlock(tmp);
free_extent_buffer(tmp);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/*
* insert root back/forward references
@@ -919,7 +919,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
parent_root->root_key.objectid,
parent_inode->i_ino, index,
dentry->d_name.name, dentry->d_name.len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
key.offset = (u64)-1;
pending->snap = btrfs_read_fs_root_no_name(root->fs_info, &key);
@@ -945,7 +945,7 @@ static noinline int create_pending_snapshots(struct btrfs_trans_handle *trans,
list_for_each_entry(pending, head, list) {
ret = create_pending_snapshot(trans, fs_info, pending);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
return 0;
}
@@ -1007,7 +1007,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
* any runnings procs may add more while we are here
*/
ret = btrfs_run_delayed_refs(trans, root, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_trans_release_metadata(trans, root);
@@ -1019,7 +1019,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
cur_trans->delayed_refs.flushing = 1;
ret = btrfs_run_delayed_refs(trans, root, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
mutex_lock(&root->fs_info->trans_mutex);
if (cur_trans->in_commit) {
@@ -1028,7 +1028,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
btrfs_end_transaction(trans, root);
ret = wait_for_commit(root, cur_trans);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
mutex_lock(&root->fs_info->trans_mutex);
put_transaction(cur_trans);
@@ -1073,7 +1073,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
if (flush_on_commit || snap_pending) {
btrfs_start_delalloc_inodes(root, 1);
ret = btrfs_wait_ordered_extents(root, 0, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/*
@@ -1098,10 +1098,10 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
(should_grow && cur_trans->num_joined != joined));
ret = create_pending_snapshots(trans, root->fs_info);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_run_delayed_refs(trans, root, (unsigned long)-1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
WARN_ON(cur_trans != trans->transaction);
@@ -1121,7 +1121,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
mutex_lock(&root->fs_info->tree_log_mutex);
ret = commit_fs_roots(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/* commit_fs_roots gets rid of all the tree log roots, it is now
* safe to free the root of tree log roots
@@ -1129,7 +1129,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
btrfs_free_log_root_tree(trans, root->fs_info);
ret = commit_cowonly_roots(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_prepare_extent_commit(trans, root);
@@ -1162,7 +1162,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
mutex_unlock(&root->fs_info->trans_mutex);
ret = btrfs_write_and_wait_transaction(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
write_ctree_super(trans, root, 0);
/*
@@ -376,7 +376,7 @@ insert:
} else if (found_size < item_size) {
ret = btrfs_extend_item(trans, root, path,
item_size - found_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
} else if (ret) {
return ret;
@@ -548,7 +548,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
/* drop any overlapping extents */
ret = btrfs_drop_extents(trans, inode, start, extent_end,
&alloc_hint, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (found_type == BTRFS_FILE_EXTENT_REG ||
found_type == BTRFS_FILE_EXTENT_PREALLOC) {
@@ -558,7 +558,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
ret = btrfs_insert_empty_item(trans, root, path, key,
sizeof(*item));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
dest_offset = btrfs_item_ptr_offset(path->nodes[0],
path->slots[0]);
copy_extent_buffer(path->nodes[0], eb, dest_offset,
@@ -592,7 +592,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
ret = btrfs_alloc_logged_file_extent(trans,
root, root->root_key.objectid,
key->objectid, offset, &ins);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_release_path(root, path);
@@ -609,7 +609,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
ret = btrfs_lookup_csums_range(root->log_root,
csum_start, csum_end - 1,
&ordered_sums);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
while (!list_empty(&ordered_sums)) {
struct btrfs_ordered_sum *sums;
sums = list_entry(ordered_sums.next,
@@ -618,7 +618,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
ret = btrfs_csum_file_blocks(trans,
root->fs_info->csum_root,
sums);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
list_del(&sums->list);
kfree(sums);
}
@@ -628,7 +628,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
} else if (found_type == BTRFS_FILE_EXTENT_INLINE) {
/* inline extents are easy, we just overwrite them */
ret = overwrite_item(trans, root, path, eb, slot, key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
inode_set_bytes(inode, saved_nbytes);
@@ -672,10 +672,10 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
BUG_ON(!inode);
ret = link_to_fixup_dir(trans, root, path, location.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_unlink_inode(trans, root, dir, inode, name, name_len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
kfree(name);
iput(inode);
@@ -886,7 +886,7 @@ conflict_again:
kfree(victim_name);
ptr = (unsigned long)(victim_ref + 1) + victim_name_len;
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_release_path(root, path);
@@ -896,7 +896,7 @@ conflict_again:
name, namelen, 0);
if (di && !IS_ERR(di)) {
ret = drop_one_dir_item(trans, root, path, dir, di);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_release_path(root, path);
@@ -906,14 +906,14 @@ conflict_again:
name, namelen, 0);
if (di && !IS_ERR(di)) {
ret = drop_one_dir_item(trans, root, path, dir, di);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_release_path(root, path);
/* insert our name */
ret = btrfs_add_link(trans, dir, inode, name, namelen, 0,
btrfs_inode_ref_index(eb, ref));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_update_inode(trans, root, inode);
@@ -925,7 +925,7 @@ out:
/* finally write the back reference in the inode */
ret = overwrite_item(trans, root, path, eb, slot, key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
out_nowrite:
btrfs_release_path(root, path);
@@ -1016,10 +1016,10 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans,
if (S_ISDIR(inode->i_mode)) {
ret = replay_dir_deletes(trans, root, NULL, path,
inode->i_ino, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = insert_orphan_item(trans, root, inode->i_ino);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_free_path(path);
@@ -1054,14 +1054,14 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
break;
ret = btrfs_del_item(trans, root, path);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(root, path);
inode = read_one_inode(root, key.offset);
BUG_ON(!inode);
ret = fixup_inode_link_count(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
iput(inode);
@@ -1232,7 +1232,7 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
goto out;
ret = drop_one_dir_item(trans, root, path, dir, dst_di);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (key->type == BTRFS_DIR_INDEX_KEY)
goto insert;
@@ -1276,7 +1276,7 @@ static noinline int replay_one_dir_item(struct btrfs_trans_handle *trans,
di = (struct btrfs_dir_item *)ptr;
name_len = btrfs_dir_name_len(eb, di);
ret = replay_one_name(trans, root, path, eb, di, key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ptr = (unsigned long)(di + 1);
ptr += name_len;
}
@@ -1429,11 +1429,11 @@ again:
ret = link_to_fixup_dir(trans, root,
path, location.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_inc_nlink(inode);
ret = btrfs_unlink_inode(trans, root, dir, inode,
name, name_len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
kfree(name);
iput(inode);
@@ -1539,7 +1539,7 @@ again:
ret = check_item_in_log(trans, root, log, path,
log_path, dir,
&found_key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (found_key.offset == (u64)-1)
break;
dir_key.offset = found_key.offset + 1;
@@ -1615,11 +1615,11 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
if (S_ISDIR(mode)) {
ret = replay_dir_deletes(wc->trans,
root, log, path, key.objectid, 0);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = overwrite_item(wc->trans, root, path,
eb, i, &key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/* for regular files, make sure corresponding
* orhpan item exist. extents past the new EOF
@@ -1628,12 +1628,12 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
if (S_ISREG(mode)) {
ret = insert_orphan_item(wc->trans, root,
key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = link_to_fixup_dir(wc->trans, root,
path, key.objectid);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
if (wc->stage < LOG_WALK_REPLAY_ALL)
continue;
@@ -1642,7 +1642,7 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
if (key.type == BTRFS_XATTR_ITEM_KEY) {
ret = overwrite_item(wc->trans, root, path,
eb, i, &key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else if (key.type == BTRFS_INODE_REF_KEY) {
ret = add_inode_ref(wc->trans, root, log, path,
eb, i, &key);
@@ -1650,12 +1650,12 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
} else if (key.type == BTRFS_EXTENT_DATA_KEY) {
ret = replay_one_extent(wc->trans, root, path,
eb, i, &key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else if (key.type == BTRFS_DIR_ITEM_KEY ||
key.type == BTRFS_DIR_INDEX_KEY) {
ret = replay_one_dir_item(wc->trans, root, path,
eb, i, &key);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
btrfs_free_path(path);
@@ -1719,7 +1719,7 @@ static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans,
BTRFS_TREE_LOG_OBJECTID);
ret = btrfs_free_reserved_extent(root,
bytenr, blocksize);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
free_extent_buffer(next);
continue;
@@ -1789,7 +1789,7 @@ static noinline int walk_up_log_tree(struct btrfs_trans_handle *trans,
ret = btrfs_free_reserved_extent(root,
path->nodes[*level]->start,
path->nodes[*level]->len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
free_extent_buffer(path->nodes[*level]);
path->nodes[*level] = NULL;
@@ -1856,7 +1856,7 @@ static int walk_log_tree(struct btrfs_trans_handle *trans,
BTRFS_TREE_LOG_OBJECTID);
ret = btrfs_free_reserved_extent(log, next->start,
next->len);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
@@ -2000,7 +2000,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
* wait for them until later.
*/
ret = btrfs_write_marked_extents(log, &log->dirty_log_pages, mark);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_set_root_node(&log->root_item, log->node);
@@ -2070,7 +2070,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
ret = btrfs_write_and_wait_marked_extents(log_root_tree,
&log_root_tree->dirty_log_pages,
EXTENT_DIRTY | EXTENT_NEW);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_wait_marked_extents(log, &log->dirty_log_pages, mark);
btrfs_set_super_log_root(&root->fs_info->super_for_commit,
@@ -2124,7 +2124,7 @@ static void free_log_tree(struct btrfs_trans_handle *trans,
};
ret = walk_log_tree(trans, log, &wc);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
while (1) {
ret = find_first_extent_bit(&log->dirty_log_pages,
@@ -2216,7 +2216,7 @@ int btrfs_del_dir_entries_in_log(struct btrfs_trans_handle *trans,
if (di) {
ret = btrfs_delete_one_dir_name(trans, log, path, di);
bytes_del += name_len;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
btrfs_release_path(log, path);
di = btrfs_lookup_dir_index_item(trans, log, path, dir->i_ino,
@@ -2228,7 +2228,7 @@ int btrfs_del_dir_entries_in_log(struct btrfs_trans_handle *trans,
if (di) {
ret = btrfs_delete_one_dir_name(trans, log, path, di);
bytes_del += name_len;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
/* update the directory size in the log to reflect the names
@@ -2579,7 +2579,7 @@ static int drop_objectid_items(struct btrfs_trans_handle *trans,
break;
ret = btrfs_del_item(trans, log, path);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(log, path);
}
btrfs_release_path(log, path);
@@ -2679,7 +2679,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
log->fs_info->csum_root,
ds + cs, ds + cs + cl - 1,
&ordered_sums);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
}
@@ -3123,12 +3123,12 @@ again:
wc.replay_dest->log_root = log;
btrfs_record_root_in_trans(trans, wc.replay_dest);
ret = walk_log_tree(trans, log, &wc);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (wc.stage == LOG_WALK_REPLAY_ALL) {
ret = fixup_inode_link_counts(trans, wc.replay_dest,
path);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
key.offset = found_key.offset - 1;
@@ -879,7 +879,7 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
if (ret > 0) {
ret = btrfs_previous_item(root, path, key.objectid,
BTRFS_DEV_EXTENT_KEY);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]);
extent = btrfs_item_ptr(leaf, path->slots[0],
@@ -892,12 +892,12 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
extent = btrfs_item_ptr(leaf, path->slots[0],
struct btrfs_dev_extent);
}
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (device->bytes_used > 0)
device->bytes_used -= btrfs_dev_extent_length(leaf, extent);
ret = btrfs_del_item(trans, root, path);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_free_path(path);
return ret;
@@ -925,7 +925,7 @@ int btrfs_alloc_dev_extent(struct btrfs_trans_handle *trans,
key.type = BTRFS_DEV_EXTENT_KEY;
ret = btrfs_insert_empty_item(trans, root, path, &key,
sizeof(*extent));
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
leaf = path->nodes[0];
extent = btrfs_item_ptr(leaf, path->slots[0],
@@ -1509,7 +1509,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
if (seeding_dev) {
sb->s_flags &= ~MS_RDONLY;
ret = btrfs_prepare_sprout(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
device->fs_devices = root->fs_info->fs_devices;
@@ -1541,9 +1541,9 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
if (seeding_dev) {
ret = init_first_rw_device(trans, root, device);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_finish_sprout(trans, root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
} else {
ret = btrfs_add_device(trans, root, device);
}
@@ -1562,7 +1562,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
up_write(&sb->s_umount);
ret = btrfs_relocate_sys_chunks(root);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
out:
mutex_unlock(&root->fs_info->volume_mutex);
@@ -1674,10 +1674,10 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans,
key.type = BTRFS_CHUNK_ITEM_KEY;
ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_del_item(trans, root, path);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_free_path(path);
return 0;
@@ -1774,25 +1774,25 @@ static int btrfs_relocate_chunk(struct btrfs_root *root,
for (i = 0; i < map->num_stripes; i++) {
ret = btrfs_free_dev_extent(trans, map->stripes[i].dev,
map->stripes[i].physical);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (map->stripes[i].dev) {
ret = btrfs_update_device(trans, map->stripes[i].dev);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
}
ret = btrfs_free_chunk(trans, root, chunk_tree, chunk_objectid,
chunk_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (map->type & BTRFS_BLOCK_GROUP_SYSTEM) {
ret = btrfs_del_sys_chunk(root, chunk_objectid, chunk_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
ret = btrfs_remove_block_group(trans, extent_root, chunk_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
write_lock(&em_tree->lock);
remove_extent_mapping(em_tree, em);
@@ -1924,13 +1924,13 @@ int btrfs_balance(struct btrfs_root *dev_root)
ret = btrfs_shrink_device(device, old_size - size_to_free);
if (ret == -ENOSPC)
break;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
trans = btrfs_start_transaction(dev_root, 0);
BUG_ON(!trans);
ret = btrfs_grow_device(trans, device, old_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_end_transaction(trans, dev_root);
}
@@ -2351,13 +2351,13 @@ again:
write_lock(&em_tree->lock);
ret = add_extent_mapping(em_tree, em);
write_unlock(&em_tree->lock);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_map(em);
ret = btrfs_make_block_group(trans, extent_root, 0, type,
BTRFS_FIRST_CHUNK_TREE_OBJECTID,
start, *num_bytes);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
index = 0;
while (index < map->num_stripes) {
@@ -2368,7 +2368,7 @@ again:
info->chunk_root->root_key.objectid,
BTRFS_FIRST_CHUNK_TREE_OBJECTID,
start, dev_offset, calc_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
index++;
}
@@ -2399,7 +2399,7 @@ static int __finish_chunk_alloc(struct btrfs_trans_handle *trans,
device = map->stripes[index].dev;
device->bytes_used += stripe_size;
ret = btrfs_update_device(trans, device);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
index++;
}
@@ -2431,12 +2431,12 @@ static int __finish_chunk_alloc(struct btrfs_trans_handle *trans,
key.offset = chunk_offset;
ret = btrfs_insert_item(trans, chunk_root, &key, chunk, item_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (map->type & BTRFS_BLOCK_GROUP_SYSTEM) {
ret = btrfs_add_system_chunk(trans, chunk_root, &key, chunk,
item_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
}
kfree(chunk);
return 0;
@@ -2471,7 +2471,7 @@ int btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
ret = __finish_chunk_alloc(trans, extent_root, map, chunk_offset,
chunk_size, stripe_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -2494,7 +2494,7 @@ static noinline int init_first_rw_device(struct btrfs_trans_handle *trans,
ret = find_next_chunk(fs_info->chunk_root,
BTRFS_FIRST_CHUNK_TREE_OBJECTID, &chunk_offset);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
alloc_profile = BTRFS_BLOCK_GROUP_METADATA |
(fs_info->metadata_alloc_profile &
@@ -2503,7 +2503,7 @@ static noinline int init_first_rw_device(struct btrfs_trans_handle *trans,
ret = __btrfs_alloc_chunk(trans, extent_root, &map, &chunk_size,
&stripe_size, chunk_offset, alloc_profile);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
sys_chunk_offset = chunk_offset + chunk_size;
@@ -2515,10 +2515,10 @@ static noinline int init_first_rw_device(struct btrfs_trans_handle *trans,
ret = __btrfs_alloc_chunk(trans, extent_root, &sys_map,
&sys_chunk_size, &sys_stripe_size,
sys_chunk_offset, alloc_profile);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = btrfs_add_device(trans, fs_info->chunk_root, device);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
/*
* Modifying chunk tree needs allocating new blocks from both
@@ -2528,12 +2528,12 @@ static noinline int init_first_rw_device(struct btrfs_trans_handle *trans,
*/
ret = __finish_chunk_alloc(trans, extent_root, map, chunk_offset,
chunk_size, stripe_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
ret = __finish_chunk_alloc(trans, extent_root, sys_map,
sys_chunk_offset, sys_chunk_size,
sys_stripe_size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
return 0;
}
@@ -3006,7 +3006,7 @@ int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio,
ret = btrfs_map_block(map_tree, rw, logical, &map_length, &multi,
mirror_num);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
total_devs = multi->num_stripes;
if (map_length < length) {
@@ -3178,7 +3178,7 @@ static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,
write_lock(&map_tree->map_tree.lock);
ret = add_extent_mapping(&map_tree->map_tree, em);
write_unlock(&map_tree->map_tree.lock);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
free_extent_map(em);
return 0;
@@ -119,7 +119,7 @@ static int do_setxattr(struct btrfs_trans_handle *trans,
}
ret = btrfs_delete_one_dir_name(trans, root, path, di);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
btrfs_release_path(root, path);
/* if we don't have a value then we are removing the xattr */
@@ -138,7 +138,7 @@ static int do_setxattr(struct btrfs_trans_handle *trans,
/* ok we have to create a completely new xattr */
ret = btrfs_insert_xattr_item(trans, root, path, inode->i_ino,
name, name_len, value, size);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
out:
btrfs_free_path(path);
return ret;
@@ -166,7 +166,7 @@ int __btrfs_setxattr(struct btrfs_trans_handle *trans,
inode->i_ctime = CURRENT_TIME;
ret = btrfs_update_inode(trans, root, inode);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
out:
btrfs_end_transaction_throttle(trans, root);
return ret;