ret = radix_tree_insert(&fs_info->fs_roots_radix,
                                (unsigned long)root->root_key.objectid,
                                root);
-       if (ret == 0)
+       if (ret == 0) {
+               btrfs_grab_fs_root(root);
                set_bit(BTRFS_ROOT_IN_RADIX, &root->state);
+       }
        spin_unlock(&fs_info->fs_roots_radix_lock);
        radix_tree_preload_end();
 
        spin_lock(&fs_info->fs_roots_radix_lock);
        radix_tree_delete(&fs_info->fs_roots_radix,
                          (unsigned long)root->root_key.objectid);
+       if (test_and_clear_bit(BTRFS_ROOT_IN_RADIX, &root->state))
+               btrfs_put_fs_root(root);
        spin_unlock(&fs_info->fs_roots_radix_lock);
 
        if (btrfs_root_refs(&root->root_item) == 0)