Btrfs: fix orphan backref nodes
If the root node of a fs/file tree is in the block group that is being relocated, but the others are not in the other block groups. when we create a snapshot for this tree between the relocation tree creation ends and ->create_reloc_tree is set to 0, Btrfs will create some backref nodes that are the lowest nodes of the backrefs cache. But we forget to add them into ->leaves list of the backref cache and deal with them, and at last, they will triggered BUG_ON(). kernel BUG at fs/btrfs/relocation.c:239! This patch fixes it by adding them into ->leaves list of backref cache. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
61b520a9d0
commit
76b9e23d25
@ -1174,6 +1174,8 @@ static int clone_backref_node(struct btrfs_trans_handle *trans,
|
||||
list_add_tail(&new_edge->list[UPPER],
|
||||
&new_node->lower);
|
||||
}
|
||||
} else {
|
||||
list_add_tail(&new_node->lower, &cache->leaves);
|
||||
}
|
||||
|
||||
rb_node = tree_insert(&cache->rb_root, new_node->bytenr,
|
||||
|
Loading…
Reference in New Issue
Block a user