struct btrfs_root *root);
 int btrfs_update_reloc_root(struct btrfs_trans_handle *trans,
                            struct btrfs_root *root);
-int btrfs_recover_relocation(struct btrfs_root *root);
+int btrfs_recover_relocation(struct btrfs_fs_info *fs_info);
 int btrfs_reloc_clone_csums(struct btrfs_inode *inode, u64 file_pos, u64 len);
 int btrfs_reloc_cow_block(struct btrfs_trans_handle *trans,
                          struct btrfs_root *root, struct extent_buffer *buf,
 
        up_read(&fs_info->cleanup_work_sem);
 
        mutex_lock(&fs_info->cleaner_mutex);
-       ret = btrfs_recover_relocation(fs_info->tree_root);
+       ret = btrfs_recover_relocation(fs_info);
        mutex_unlock(&fs_info->cleaner_mutex);
        if (ret < 0) {
                btrfs_warn(fs_info, "failed to recover relocation: %d", ret);
 
  * this function resumes merging reloc trees with corresponding fs trees.
  * this is important for keeping the sharing of tree blocks
  */
-int btrfs_recover_relocation(struct btrfs_root *root)
+int btrfs_recover_relocation(struct btrfs_fs_info *fs_info)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        LIST_HEAD(reloc_roots);
        struct btrfs_key key;
        struct btrfs_root *fs_root;
                    key.type != BTRFS_ROOT_ITEM_KEY)
                        break;
 
-               reloc_root = btrfs_read_tree_root(root, &key);
+               reloc_root = btrfs_read_tree_root(fs_info->tree_root, &key);
                if (IS_ERR(reloc_root)) {
                        err = PTR_ERR(reloc_root);
                        goto out;