Call btrfs_cow_block while lowering tree level.
When freeing root block of a tree, btrfs_free_extent' parameter 'ref_generation' is from root block itseft. When freeing non-root block, 'ref_generation' is from its parent. so when converting a non-root block to root block, we must guarantee its generation is equal to its parent's generation. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
60cde612c8
commit
2f375ab9c5
1 changed files with 3 additions and 0 deletions
|
@ -720,6 +720,9 @@ static int balance_level(struct btrfs_trans_handle *trans,
|
|||
/* promote the child to a root */
|
||||
child = read_node_slot(root, mid, 0);
|
||||
BUG_ON(!child);
|
||||
ret = btrfs_cow_block(trans, root, child, mid, 0, &child);
|
||||
BUG_ON(ret);
|
||||
|
||||
root->node = child;
|
||||
path->nodes[level] = NULL;
|
||||
clean_tree_block(trans, root, mid);
|
||||
|
|
Loading…
Reference in a new issue