static void __recow_root(struct btrfs_trans_handle *trans, struct btrfs_root *root) { int ret; struct extent_buffer *tmp; if (trans->transid != btrfs_root_generation(&root->root_item)) { ret = __btrfs_cow_block(trans, root, root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); } }
static int recow_roots(struct btrfs_trans_handle *trans, struct btrfs_root *root) { int ret; struct extent_buffer *tmp; struct btrfs_fs_info *info = root->fs_info; ret = __btrfs_cow_block(trans, info->fs_root, info->fs_root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); ret = __btrfs_cow_block(trans, info->tree_root, info->tree_root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); ret = __btrfs_cow_block(trans, info->extent_root, info->extent_root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); ret = __btrfs_cow_block(trans, info->chunk_root, info->chunk_root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); ret = __btrfs_cow_block(trans, info->dev_root, info->dev_root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); ret = __btrfs_cow_block(trans, info->csum_root, info->csum_root->node, NULL, 0, &tmp, 0, 0); BUG_ON(ret); free_extent_buffer(tmp); return 0; }