Lines Matching defs:cache

20 #include "free-space-cache.h"
238 static void update_backref_node(struct btrfs_backref_cache *cache,
242 rb_erase(&node->rb_node, &cache->rb_root);
244 rb_node = rb_simple_insert(&cache->rb_root, node->bytenr, &node->rb_node);
246 btrfs_backref_panic(cache->fs_info, bytenr, -EEXIST);
250 * update backref cache after a transaction commit
253 struct btrfs_backref_cache *cache)
258 if (cache->last_trans == 0) {
259 cache->last_trans = trans->transid;
263 if (cache->last_trans == trans->transid)
271 while (!list_empty(&cache->detached)) {
272 node = list_entry(cache->detached.next,
274 btrfs_backref_cleanup_node(cache, node);
277 while (!list_empty(&cache->changed)) {
278 node = list_entry(cache->changed.next,
282 update_backref_node(cache, node, node->new_bytenr);
290 list_for_each_entry(node, &cache->pending[level], list) {
294 update_backref_node(cache, node, node->new_bytenr);
298 cache->last_trans = 0;
396 struct btrfs_backref_cache *cache = &rc->backref_cache;
397 struct list_head *useless_node = &cache->useless_node;
429 btrfs_backref_free_edge(cache, edge);
439 * Backref nodes for tree leaves are deleted from the cache.
441 * cache to avoid unnecessary backref lookup.
444 list_add(&cur->list, &cache->detached);
447 rb_erase(&cur->rb_node, &cache->rb_root);
448 btrfs_backref_free_node(cache, cur);
474 struct btrfs_backref_cache *cache = &rc->backref_cache;
492 node = btrfs_backref_alloc_node(cache, bytenr, level);
501 /* Breadth-first search to build backref cache */
503 ret = btrfs_backref_add_tree_node(trans, cache, path, iter,
509 edge = list_first_entry_or_null(&cache->pending_edge,
522 ret = btrfs_backref_finish_upper_links(cache, node);
534 btrfs_backref_error_cleanup(cache, node);
538 ASSERT(list_empty(&cache->useless_node) &&
539 list_empty(&cache->pending_edge));
554 struct btrfs_backref_cache *cache = &rc->backref_cache;
561 if (cache->last_trans > 0)
562 update_backref_cache(trans, cache);
564 rb_node = rb_simple_search(&cache->rb_root, src->commit_root->start);
574 rb_node = rb_simple_search(&cache->rb_root,
586 new_node = btrfs_backref_alloc_node(cache, dest->node->start,
598 new_edge = btrfs_backref_alloc_edge(cache);
606 list_add_tail(&new_node->lower, &cache->leaves);
609 rb_node = rb_simple_insert(&cache->rb_root, new_node->bytenr,
626 btrfs_backref_free_edge(cache, new_edge);
628 btrfs_backref_free_node(cache, new_node);
1115 * to complete and drop the extent cache
1517 * invalidate extent cache for file extents whose key in range of
2576 struct btrfs_backref_cache *cache = &rc->backref_cache;
2582 while (!list_empty(&cache->pending[level])) {
2583 node = list_entry(cache->pending[level].next,
2594 list_splice_init(&list, &cache->pending[level]);
3403 * Locate the free space cache EXTENT_DATA in root tree leaf and delete the
3404 * cache inode, to avoid free space cache data extent blocking data relocation.