btrfs: backref: rename and move backref_cache_cleanup()
Since we're releasing all existing nodes/edges, other than cleanup the mess after error, "release" is a more proper naming here. Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
@@ -2559,3 +2559,36 @@ void btrfs_backref_cleanup_node(struct btrfs_backref_cache *cache,
|
|||||||
|
|
||||||
btrfs_backref_drop_node(cache, node);
|
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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -353,4 +353,6 @@ static inline void btrfs_backref_drop_node(struct btrfs_backref_cache *tree,
|
|||||||
void btrfs_backref_cleanup_node(struct btrfs_backref_cache *cache,
|
void btrfs_backref_cleanup_node(struct btrfs_backref_cache *cache,
|
||||||
struct btrfs_backref_node *node);
|
struct btrfs_backref_node *node);
|
||||||
|
|
||||||
|
void btrfs_backref_release_cache(struct btrfs_backref_cache *cache);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -175,36 +175,6 @@ static void mapping_tree_init(struct mapping_tree *tree)
|
|||||||
spin_lock_init(&tree->lock);
|
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)
|
static void backref_tree_panic(struct rb_node *rb_node, int errno, u64 bytenr)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -3948,7 +3918,7 @@ restart:
|
|||||||
rc->create_reloc_tree = 0;
|
rc->create_reloc_tree = 0;
|
||||||
set_reloc_control(rc);
|
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);
|
btrfs_block_rsv_release(fs_info, rc->block_rsv, (u64)-1, NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user