Lines Matching refs:tree

37 void extent_map_tree_init(struct extent_map_tree *tree)  in extent_map_tree_init()  argument
39 tree->map = RB_ROOT_CACHED; in extent_map_tree_init()
40 INIT_LIST_HEAD(&tree->modified_extents); in extent_map_tree_init()
41 rwlock_init(&tree->lock); in extent_map_tree_init()
239 static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em) in try_merge_map() argument
270 rb_erase_cached(&merge->rb_node, &tree->map); in try_merge_map()
282 rb_erase_cached(&merge->rb_node, &tree->map); in try_merge_map()
302 int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len, in unpin_extent_cache() argument
309 write_lock(&tree->lock); in unpin_extent_cache()
310 em = lookup_extent_mapping(tree, start, len); in unpin_extent_cache()
327 try_merge_map(tree, em); in unpin_extent_cache()
336 write_unlock(&tree->lock); in unpin_extent_cache()
341 void clear_em_logging(struct extent_map_tree *tree, struct extent_map *em) in clear_em_logging() argument
343 lockdep_assert_held_write(&tree->lock); in clear_em_logging()
347 try_merge_map(tree, em); in clear_em_logging()
350 static inline void setup_extent_mapping(struct extent_map_tree *tree, in setup_extent_mapping() argument
359 list_move(&em->list, &tree->modified_extents); in setup_extent_mapping()
361 try_merge_map(tree, em); in setup_extent_mapping()
408 int add_extent_mapping(struct extent_map_tree *tree, in add_extent_mapping() argument
413 lockdep_assert_held_write(&tree->lock); in add_extent_mapping()
415 ret = tree_insert(&tree->map, em); in add_extent_mapping()
419 setup_extent_mapping(tree, em, modified); in add_extent_mapping()
429 __lookup_extent_mapping(struct extent_map_tree *tree, in __lookup_extent_mapping() argument
437 rb_node = __tree_search(&tree->map.rb_root, start, &prev_or_next); in __lookup_extent_mapping()
465 struct extent_map *lookup_extent_mapping(struct extent_map_tree *tree, in lookup_extent_mapping() argument
468 return __lookup_extent_mapping(tree, start, len, 1); in lookup_extent_mapping()
482 struct extent_map *search_extent_mapping(struct extent_map_tree *tree, in search_extent_mapping() argument
485 return __lookup_extent_mapping(tree, start, len, 0); in search_extent_mapping()
496 void remove_extent_mapping(struct extent_map_tree *tree, struct extent_map *em) in remove_extent_mapping() argument
498 lockdep_assert_held_write(&tree->lock); in remove_extent_mapping()
501 rb_erase_cached(&em->rb_node, &tree->map); in remove_extent_mapping()
509 void replace_extent_mapping(struct extent_map_tree *tree, in replace_extent_mapping() argument
514 lockdep_assert_held_write(&tree->lock); in replace_extent_mapping()
520 rb_replace_node_cached(&cur->rb_node, &new->rb_node, &tree->map); in replace_extent_mapping()
523 setup_extent_mapping(tree, new, modified); in replace_extent_mapping()
670 static void drop_all_extent_maps_fast(struct extent_map_tree *tree) in drop_all_extent_maps_fast() argument
672 write_lock(&tree->lock); in drop_all_extent_maps_fast()
673 while (!RB_EMPTY_ROOT(&tree->map.rb_root)) { in drop_all_extent_maps_fast()
677 node = rb_first_cached(&tree->map); in drop_all_extent_maps_fast()
681 remove_extent_mapping(tree, em); in drop_all_extent_maps_fast()
683 cond_resched_rwlock_write(&tree->lock); in drop_all_extent_maps_fast()
685 write_unlock(&tree->lock); in drop_all_extent_maps_fast()
932 struct extent_map_tree *tree = &inode->extent_tree; in btrfs_replace_extent_map_range() local
947 write_lock(&tree->lock); in btrfs_replace_extent_map_range()
948 ret = add_extent_mapping(tree, new_em, modified); in btrfs_replace_extent_map_range()
949 write_unlock(&tree->lock); in btrfs_replace_extent_map_range()