diff options
Diffstat (limited to 'fs/btrfs/free-space-cache.c')
-rw-r--r-- | fs/btrfs/free-space-cache.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index b02e379b14c7..e88330d3df52 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c | |||
@@ -230,11 +230,13 @@ int btrfs_truncate_free_space_cache(struct btrfs_root *root, | |||
230 | 230 | ||
231 | if (ret) { | 231 | if (ret) { |
232 | trans->block_rsv = rsv; | 232 | trans->block_rsv = rsv; |
233 | WARN_ON(1); | 233 | btrfs_abort_transaction(trans, root, ret); |
234 | return ret; | 234 | return ret; |
235 | } | 235 | } |
236 | 236 | ||
237 | ret = btrfs_update_inode(trans, root, inode); | 237 | ret = btrfs_update_inode(trans, root, inode); |
238 | if (ret) | ||
239 | btrfs_abort_transaction(trans, root, ret); | ||
238 | trans->block_rsv = rsv; | 240 | trans->block_rsv = rsv; |
239 | 241 | ||
240 | return ret; | 242 | return ret; |
@@ -869,7 +871,7 @@ int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode, | |||
869 | io_ctl_prepare_pages(&io_ctl, inode, 0); | 871 | io_ctl_prepare_pages(&io_ctl, inode, 0); |
870 | 872 | ||
871 | lock_extent_bits(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1, | 873 | lock_extent_bits(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1, |
872 | 0, &cached_state, GFP_NOFS); | 874 | 0, &cached_state); |
873 | 875 | ||
874 | node = rb_first(&ctl->free_space_offset); | 876 | node = rb_first(&ctl->free_space_offset); |
875 | if (!node && cluster) { | 877 | if (!node && cluster) { |
@@ -1948,14 +1950,14 @@ again: | |||
1948 | */ | 1950 | */ |
1949 | ret = btrfs_add_free_space(block_group, old_start, | 1951 | ret = btrfs_add_free_space(block_group, old_start, |
1950 | offset - old_start); | 1952 | offset - old_start); |
1951 | WARN_ON(ret); | 1953 | WARN_ON(ret); /* -ENOMEM */ |
1952 | goto out; | 1954 | goto out; |
1953 | } | 1955 | } |
1954 | 1956 | ||
1955 | ret = remove_from_bitmap(ctl, info, &offset, &bytes); | 1957 | ret = remove_from_bitmap(ctl, info, &offset, &bytes); |
1956 | if (ret == -EAGAIN) | 1958 | if (ret == -EAGAIN) |
1957 | goto again; | 1959 | goto again; |
1958 | BUG_ON(ret); | 1960 | BUG_ON(ret); /* logic error */ |
1959 | out_lock: | 1961 | out_lock: |
1960 | spin_unlock(&ctl->tree_lock); | 1962 | spin_unlock(&ctl->tree_lock); |
1961 | out: | 1963 | out: |
@@ -2346,7 +2348,7 @@ again: | |||
2346 | rb_erase(&entry->offset_index, &ctl->free_space_offset); | 2348 | rb_erase(&entry->offset_index, &ctl->free_space_offset); |
2347 | ret = tree_insert_offset(&cluster->root, entry->offset, | 2349 | ret = tree_insert_offset(&cluster->root, entry->offset, |
2348 | &entry->offset_index, 1); | 2350 | &entry->offset_index, 1); |
2349 | BUG_ON(ret); | 2351 | BUG_ON(ret); /* -EEXIST; Logic error */ |
2350 | 2352 | ||
2351 | trace_btrfs_setup_cluster(block_group, cluster, | 2353 | trace_btrfs_setup_cluster(block_group, cluster, |
2352 | total_found * block_group->sectorsize, 1); | 2354 | total_found * block_group->sectorsize, 1); |
@@ -2439,7 +2441,7 @@ setup_cluster_no_bitmap(struct btrfs_block_group_cache *block_group, | |||
2439 | ret = tree_insert_offset(&cluster->root, entry->offset, | 2441 | ret = tree_insert_offset(&cluster->root, entry->offset, |
2440 | &entry->offset_index, 0); | 2442 | &entry->offset_index, 0); |
2441 | total_size += entry->bytes; | 2443 | total_size += entry->bytes; |
2442 | BUG_ON(ret); | 2444 | BUG_ON(ret); /* -EEXIST; Logic error */ |
2443 | } while (node && entry != last); | 2445 | } while (node && entry != last); |
2444 | 2446 | ||
2445 | cluster->max_size = max_extent; | 2447 | cluster->max_size = max_extent; |
@@ -2830,6 +2832,7 @@ u64 btrfs_find_ino_for_alloc(struct btrfs_root *fs_root) | |||
2830 | int ret; | 2832 | int ret; |
2831 | 2833 | ||
2832 | ret = search_bitmap(ctl, entry, &offset, &count); | 2834 | ret = search_bitmap(ctl, entry, &offset, &count); |
2835 | /* Logic error; Should be empty if it can't find anything */ | ||
2833 | BUG_ON(ret); | 2836 | BUG_ON(ret); |
2834 | 2837 | ||
2835 | ino = offset; | 2838 | ino = offset; |