+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);
+
+ return 0;
+}
+