summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYan, Zheng <zheng.yan@oracle.com>2010-05-31 09:04:46 +0000
committerChris Mason <chris.mason@oracle.com>2010-06-11 15:48:35 -0400
commit3bf84a5a834d13e7c5c3e8e5b5c6b26012118dd8 (patch)
tree7cc6e70cb2cc175163472141b1ca2dfc4c72eddd
parent046f264f6b3b2cf7e5a1769fc92335d8a9316282 (diff)
downloadlinux-stable-3bf84a5a834d13e7c5c3e8e5b5c6b26012118dd8.tar.gz
linux-stable-3bf84a5a834d13e7c5c3e8e5b5c6b26012118dd8.tar.bz2
linux-stable-3bf84a5a834d13e7c5c3e8e5b5c6b26012118dd8.zip
Btrfs: Fix BUG_ON for fs converted from extN
Tree blocks can live in data block groups in FS converted from extN. So it's easy to trigger the BUG_ON. Signed-off-by: Yan Zheng <zheng.yan@oracle.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/extent-tree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 6c14101506e1..a46b64de8f02 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4360,7 +4360,8 @@ void btrfs_free_tree_block(struct btrfs_trans_handle *trans,
block_rsv = get_block_rsv(trans, root);
cache = btrfs_lookup_block_group(root->fs_info, buf->start);
- BUG_ON(block_rsv->space_info != cache->space_info);
+ if (block_rsv->space_info != cache->space_info)
+ goto out;
if (btrfs_header_generation(buf) == trans->transid) {
if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) {