]> git.hungrycats.org Git - linux/commitdiff
Btrfs: abort transaction if we don't find the block group
authorJosef Bacik <jbacik@fb.com>
Fri, 12 Dec 2014 21:02:20 +0000 (16:02 -0500)
committerZygo Blaxell <zblaxell@serenity.furryterror.org>
Mon, 5 Jan 2015 21:46:06 +0000 (16:46 -0500)
We shouldn't BUG_ON() if there is corruption.  I hit this while testing my block
group patch and the abort worked properly.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
(cherry picked from commit df95e7f0d93e2fa776b168eac798a16a1e361022)

fs/btrfs/extent-tree.c

index 856c1faa77ea2c94a451ae6ff52ca01e054a43dd..fc6d3dce92348b8fedccca594a35d6519c4c5b66 100644 (file)
@@ -3139,9 +3139,11 @@ static int write_one_cache_group(struct btrfs_trans_handle *trans,
        struct extent_buffer *leaf;
 
        ret = btrfs_search_slot(trans, extent_root, &cache->key, path, 0, 1);
-       if (ret < 0)
+       if (ret) {
+               if (ret > 0)
+                       ret = -ENOENT;
                goto fail;
-       BUG_ON(ret); /* Corruption */
+       }
 
        leaf = path->nodes[0];
        bi = btrfs_item_ptr_offset(leaf, path->slots[0]);
@@ -3149,11 +3151,9 @@ static int write_one_cache_group(struct btrfs_trans_handle *trans,
        btrfs_mark_buffer_dirty(leaf);
        btrfs_release_path(path);
 fail:
-       if (ret) {
+       if (ret)
                btrfs_abort_transaction(trans, root, ret);
-               return ret;
-       }
-       return 0;
+       return ret;
 
 }