btrfs_backref_drop_node(cache, node);
 }
+
+/*
+ * Release all nodes/edges from current cache
+ */
+void btrfs_backref_release_cache(struct btrfs_backref_cache *cache)
+{
+       struct btrfs_backref_node *node;
+       int i;
+
+       while (!list_empty(&cache->detached)) {
+               node = list_entry(cache->detached.next,
+                                 struct btrfs_backref_node, list);
+               btrfs_backref_cleanup_node(cache, node);
+       }
+
+       while (!list_empty(&cache->leaves)) {
+               node = list_entry(cache->leaves.next,
+                                 struct btrfs_backref_node, lower);
+               btrfs_backref_cleanup_node(cache, node);
+       }
+
+       cache->last_trans = 0;
+
+       for (i = 0; i < BTRFS_MAX_LEVEL; i++)
+               ASSERT(list_empty(&cache->pending[i]));
+       ASSERT(list_empty(&cache->pending_edge));
+       ASSERT(list_empty(&cache->useless_node));
+       ASSERT(list_empty(&cache->changed));
+       ASSERT(list_empty(&cache->detached));
+       ASSERT(RB_EMPTY_ROOT(&cache->rb_root));
+       ASSERT(!cache->nr_nodes);
+       ASSERT(!cache->nr_edges);
+}
 
        spin_lock_init(&tree->lock);
 }
 
-static void backref_cache_cleanup(struct btrfs_backref_cache *cache)
-{
-       struct btrfs_backref_node *node;
-       int i;
-
-       while (!list_empty(&cache->detached)) {
-               node = list_entry(cache->detached.next,
-                                 struct btrfs_backref_node, list);
-               btrfs_backref_cleanup_node(cache, node);
-       }
-
-       while (!list_empty(&cache->leaves)) {
-               node = list_entry(cache->leaves.next,
-                                 struct btrfs_backref_node, lower);
-               btrfs_backref_cleanup_node(cache, node);
-       }
-
-       cache->last_trans = 0;
-
-       for (i = 0; i < BTRFS_MAX_LEVEL; i++)
-               ASSERT(list_empty(&cache->pending[i]));
-       ASSERT(list_empty(&cache->pending_edge));
-       ASSERT(list_empty(&cache->useless_node));
-       ASSERT(list_empty(&cache->changed));
-       ASSERT(list_empty(&cache->detached));
-       ASSERT(RB_EMPTY_ROOT(&cache->rb_root));
-       ASSERT(!cache->nr_nodes);
-       ASSERT(!cache->nr_edges);
-}
-
 static void backref_tree_panic(struct rb_node *rb_node, int errno, u64 bytenr)
 {
 
        rc->create_reloc_tree = 0;
        set_reloc_control(rc);
 
-       backref_cache_cleanup(&rc->backref_cache);
+       btrfs_backref_release_cache(&rc->backref_cache);
        btrfs_block_rsv_release(fs_info, rc->block_rsv, (u64)-1, NULL);
 
        /*