Lines Matching refs:rt
80 zfs_rs_copy(zfs_range_seg_t *src, zfs_range_seg_t *dest, zfs_range_tree_t *rt) in zfs_rs_copy() argument
82 ASSERT3U(rt->rt_type, <, ZFS_RANGE_SEG_NUM_TYPES); in zfs_rs_copy()
84 switch (rt->rt_type) { in zfs_rs_copy()
101 zfs_range_tree_stat_verify(zfs_range_tree_t *rt) in zfs_range_tree_stat_verify() argument
108 for (rs = zfs_btree_first(&rt->rt_root, &where); rs != NULL; in zfs_range_tree_stat_verify()
109 rs = zfs_btree_next(&rt->rt_root, &where, &where)) { in zfs_range_tree_stat_verify()
110 uint64_t size = zfs_rs_get_end(rs, rt) - in zfs_range_tree_stat_verify()
111 zfs_rs_get_start(rs, rt); in zfs_range_tree_stat_verify()
119 if (hist[i] != rt->rt_histogram[i]) { in zfs_range_tree_stat_verify()
122 (u_longlong_t)rt->rt_histogram[i]); in zfs_range_tree_stat_verify()
124 VERIFY3U(hist[i], ==, rt->rt_histogram[i]); in zfs_range_tree_stat_verify()
129 zfs_range_tree_stat_incr(zfs_range_tree_t *rt, zfs_range_seg_t *rs) in zfs_range_tree_stat_incr() argument
131 uint64_t size = zfs_rs_get_end(rs, rt) - zfs_rs_get_start(rs, rt); in zfs_range_tree_stat_incr()
136 sizeof (rt->rt_histogram) / sizeof (*rt->rt_histogram)); in zfs_range_tree_stat_incr()
138 rt->rt_histogram[idx]++; in zfs_range_tree_stat_incr()
139 ASSERT3U(rt->rt_histogram[idx], !=, 0); in zfs_range_tree_stat_incr()
143 zfs_range_tree_stat_decr(zfs_range_tree_t *rt, zfs_range_seg_t *rs) in zfs_range_tree_stat_decr() argument
145 uint64_t size = zfs_rs_get_end(rs, rt) - zfs_rs_get_start(rs, rt); in zfs_range_tree_stat_decr()
150 sizeof (rt->rt_histogram) / sizeof (*rt->rt_histogram)); in zfs_range_tree_stat_decr()
152 ASSERT3U(rt->rt_histogram[idx], !=, 0); in zfs_range_tree_stat_decr()
153 rt->rt_histogram[idx]--; in zfs_range_tree_stat_decr()
209 zfs_range_tree_t *rt = kmem_zalloc(sizeof (zfs_range_tree_t), KM_SLEEP); in ZFS_BTREE_FIND_IN_BUF_FUNC() local
235 zfs_btree_create(&rt->rt_root, compare, bt_find, size); in ZFS_BTREE_FIND_IN_BUF_FUNC()
237 rt->rt_ops = ops; in ZFS_BTREE_FIND_IN_BUF_FUNC()
238 rt->rt_gap = gap; in ZFS_BTREE_FIND_IN_BUF_FUNC()
239 rt->rt_arg = arg; in ZFS_BTREE_FIND_IN_BUF_FUNC()
240 rt->rt_type = type; in ZFS_BTREE_FIND_IN_BUF_FUNC()
241 rt->rt_start = start; in ZFS_BTREE_FIND_IN_BUF_FUNC()
242 rt->rt_shift = shift; in ZFS_BTREE_FIND_IN_BUF_FUNC()
244 if (rt->rt_ops != NULL && rt->rt_ops->rtop_create != NULL) in ZFS_BTREE_FIND_IN_BUF_FUNC()
245 rt->rt_ops->rtop_create(rt, rt->rt_arg); in ZFS_BTREE_FIND_IN_BUF_FUNC()
247 return (rt); in ZFS_BTREE_FIND_IN_BUF_FUNC()
258 zfs_range_tree_destroy(zfs_range_tree_t *rt) in zfs_range_tree_destroy() argument
260 VERIFY0(rt->rt_space); in zfs_range_tree_destroy()
262 if (rt->rt_ops != NULL && rt->rt_ops->rtop_destroy != NULL) in zfs_range_tree_destroy()
263 rt->rt_ops->rtop_destroy(rt, rt->rt_arg); in zfs_range_tree_destroy()
265 zfs_btree_destroy(&rt->rt_root); in zfs_range_tree_destroy()
266 kmem_free(rt, sizeof (*rt)); in zfs_range_tree_destroy()
270 zfs_range_tree_adjust_fill(zfs_range_tree_t *rt, zfs_range_seg_t *rs, in zfs_range_tree_adjust_fill() argument
273 if (delta < 0 && delta * -1 >= zfs_rs_get_fill(rs, rt)) { in zfs_range_tree_adjust_fill()
276 (longlong_t)zfs_rs_get_start(rs, rt), in zfs_range_tree_adjust_fill()
277 (longlong_t)zfs_rs_get_end(rs, rt)); in zfs_range_tree_adjust_fill()
279 if (zfs_rs_get_fill(rs, rt) + delta > zfs_rs_get_end(rs, rt) - in zfs_range_tree_adjust_fill()
280 zfs_rs_get_start(rs, rt)) { in zfs_range_tree_adjust_fill()
283 (longlong_t)zfs_rs_get_start(rs, rt), in zfs_range_tree_adjust_fill()
284 (longlong_t)zfs_rs_get_end(rs, rt)); in zfs_range_tree_adjust_fill()
287 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) in zfs_range_tree_adjust_fill()
288 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_adjust_fill()
289 zfs_rs_set_fill(rs, rt, zfs_rs_get_fill(rs, rt) + delta); in zfs_range_tree_adjust_fill()
290 if (rt->rt_ops != NULL && rt->rt_ops->rtop_add != NULL) in zfs_range_tree_adjust_fill()
291 rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); in zfs_range_tree_adjust_fill()
297 zfs_range_tree_t *rt = arg; in zfs_range_tree_add_impl() local
301 uint64_t end = start + size, gap = rt->rt_gap; in zfs_range_tree_add_impl()
309 zfs_rs_set_start(&rsearch, rt, start); in zfs_range_tree_add_impl()
310 zfs_rs_set_end(&rsearch, rt, end); in zfs_range_tree_add_impl()
311 rs = zfs_btree_find(&rt->rt_root, &rsearch, &where); in zfs_range_tree_add_impl()
328 uint64_t rstart = zfs_rs_get_start(rs, rt); in zfs_range_tree_add_impl()
329 uint64_t rend = zfs_rs_get_end(rs, rt); in zfs_range_tree_add_impl()
331 zfs_range_tree_adjust_fill(rt, rs, fill); in zfs_range_tree_add_impl()
335 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) in zfs_range_tree_add_impl()
336 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_add_impl()
338 zfs_range_tree_stat_decr(rt, rs); in zfs_range_tree_add_impl()
339 rt->rt_space -= rend - rstart; in zfs_range_tree_add_impl()
341 fill += zfs_rs_get_fill(rs, rt); in zfs_range_tree_add_impl()
346 zfs_btree_remove(&rt->rt_root, rs); in zfs_range_tree_add_impl()
347 zfs_range_tree_add_impl(rt, start, size, fill); in zfs_range_tree_add_impl()
359 rs_before = zfs_btree_prev(&rt->rt_root, &where, &where_before); in zfs_range_tree_add_impl()
360 rs_after = zfs_btree_next(&rt->rt_root, &where, &where_after); in zfs_range_tree_add_impl()
362 merge_before = (rs_before != NULL && zfs_rs_get_end(rs_before, rt) >= in zfs_range_tree_add_impl()
364 merge_after = (rs_after != NULL && zfs_rs_get_start(rs_after, rt) <= in zfs_range_tree_add_impl()
368 bridge_size += start - zfs_rs_get_end(rs_before, rt); in zfs_range_tree_add_impl()
370 bridge_size += zfs_rs_get_start(rs_after, rt) - end; in zfs_range_tree_add_impl()
373 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) { in zfs_range_tree_add_impl()
374 rt->rt_ops->rtop_remove(rt, rs_before, rt->rt_arg); in zfs_range_tree_add_impl()
375 rt->rt_ops->rtop_remove(rt, rs_after, rt->rt_arg); in zfs_range_tree_add_impl()
378 zfs_range_tree_stat_decr(rt, rs_before); in zfs_range_tree_add_impl()
379 zfs_range_tree_stat_decr(rt, rs_after); in zfs_range_tree_add_impl()
381 zfs_rs_copy(rs_after, &tmp, rt); in zfs_range_tree_add_impl()
382 uint64_t before_start = zfs_rs_get_start_raw(rs_before, rt); in zfs_range_tree_add_impl()
383 uint64_t before_fill = zfs_rs_get_fill(rs_before, rt); in zfs_range_tree_add_impl()
384 uint64_t after_fill = zfs_rs_get_fill(rs_after, rt); in zfs_range_tree_add_impl()
385 zfs_btree_remove_idx(&rt->rt_root, &where_before); in zfs_range_tree_add_impl()
391 rs_after = zfs_btree_find(&rt->rt_root, &tmp, &where_after); in zfs_range_tree_add_impl()
393 zfs_rs_set_start_raw(rs_after, rt, before_start); in zfs_range_tree_add_impl()
394 zfs_rs_set_fill(rs_after, rt, after_fill + before_fill + fill); in zfs_range_tree_add_impl()
397 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) in zfs_range_tree_add_impl()
398 rt->rt_ops->rtop_remove(rt, rs_before, rt->rt_arg); in zfs_range_tree_add_impl()
400 zfs_range_tree_stat_decr(rt, rs_before); in zfs_range_tree_add_impl()
402 uint64_t before_fill = zfs_rs_get_fill(rs_before, rt); in zfs_range_tree_add_impl()
403 zfs_rs_set_end(rs_before, rt, end); in zfs_range_tree_add_impl()
404 zfs_rs_set_fill(rs_before, rt, before_fill + fill); in zfs_range_tree_add_impl()
407 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) in zfs_range_tree_add_impl()
408 rt->rt_ops->rtop_remove(rt, rs_after, rt->rt_arg); in zfs_range_tree_add_impl()
410 zfs_range_tree_stat_decr(rt, rs_after); in zfs_range_tree_add_impl()
412 uint64_t after_fill = zfs_rs_get_fill(rs_after, rt); in zfs_range_tree_add_impl()
413 zfs_rs_set_start(rs_after, rt, start); in zfs_range_tree_add_impl()
414 zfs_rs_set_fill(rs_after, rt, after_fill + fill); in zfs_range_tree_add_impl()
419 zfs_rs_set_start(rs, rt, start); in zfs_range_tree_add_impl()
420 zfs_rs_set_end(rs, rt, end); in zfs_range_tree_add_impl()
421 zfs_rs_set_fill(rs, rt, fill); in zfs_range_tree_add_impl()
422 zfs_btree_add_idx(&rt->rt_root, rs, &where); in zfs_range_tree_add_impl()
426 ASSERT3U(zfs_rs_get_fill(rs, rt), <=, zfs_rs_get_end(rs, rt) - in zfs_range_tree_add_impl()
427 zfs_rs_get_start(rs, rt)); in zfs_range_tree_add_impl()
429 ASSERT3U(zfs_rs_get_fill(rs, rt), ==, zfs_rs_get_end(rs, rt) - in zfs_range_tree_add_impl()
430 zfs_rs_get_start(rs, rt)); in zfs_range_tree_add_impl()
433 if (rt->rt_ops != NULL && rt->rt_ops->rtop_add != NULL) in zfs_range_tree_add_impl()
434 rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); in zfs_range_tree_add_impl()
436 zfs_range_tree_stat_incr(rt, rs); in zfs_range_tree_add_impl()
437 rt->rt_space += size + bridge_size; in zfs_range_tree_add_impl()
447 zfs_range_tree_remove_impl(zfs_range_tree_t *rt, uint64_t start, uint64_t size, in zfs_range_tree_remove_impl() argument
457 VERIFY3U(size, <=, rt->rt_space); in zfs_range_tree_remove_impl()
458 if (rt->rt_type == ZFS_RANGE_SEG64) in zfs_range_tree_remove_impl()
461 zfs_rs_set_start(&rsearch, rt, start); in zfs_range_tree_remove_impl()
462 zfs_rs_set_end(&rsearch, rt, end); in zfs_range_tree_remove_impl()
463 rs = zfs_btree_find(&rt->rt_root, &rsearch, &where); in zfs_range_tree_remove_impl()
479 if (rt->rt_gap != 0) { in zfs_range_tree_remove_impl()
481 if (zfs_rs_get_fill(rs, rt) == size) { in zfs_range_tree_remove_impl()
482 start = zfs_rs_get_start(rs, rt); in zfs_range_tree_remove_impl()
483 end = zfs_rs_get_end(rs, rt); in zfs_range_tree_remove_impl()
486 zfs_range_tree_adjust_fill(rt, rs, -size); in zfs_range_tree_remove_impl()
489 } else if (zfs_rs_get_start(rs, rt) != start || in zfs_range_tree_remove_impl()
490 zfs_rs_get_end(rs, rt) != end) { in zfs_range_tree_remove_impl()
495 (longlong_t)zfs_rs_get_start(rs, rt), in zfs_range_tree_remove_impl()
496 (longlong_t)zfs_rs_get_end(rs, rt) - in zfs_range_tree_remove_impl()
497 zfs_rs_get_start(rs, rt)); in zfs_range_tree_remove_impl()
502 VERIFY3U(zfs_rs_get_start(rs, rt), <=, start); in zfs_range_tree_remove_impl()
503 VERIFY3U(zfs_rs_get_end(rs, rt), >=, end); in zfs_range_tree_remove_impl()
505 left_over = (zfs_rs_get_start(rs, rt) != start); in zfs_range_tree_remove_impl()
506 right_over = (zfs_rs_get_end(rs, rt) != end); in zfs_range_tree_remove_impl()
508 zfs_range_tree_stat_decr(rt, rs); in zfs_range_tree_remove_impl()
510 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) in zfs_range_tree_remove_impl()
511 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_remove_impl()
515 zfs_rs_set_start(&newseg, rt, end); in zfs_range_tree_remove_impl()
516 zfs_rs_set_end_raw(&newseg, rt, zfs_rs_get_end_raw(rs, rt)); in zfs_range_tree_remove_impl()
517 zfs_rs_set_fill(&newseg, rt, zfs_rs_get_end(rs, rt) - end); in zfs_range_tree_remove_impl()
518 zfs_range_tree_stat_incr(rt, &newseg); in zfs_range_tree_remove_impl()
521 zfs_rs_set_end(rs, rt, start); in zfs_range_tree_remove_impl()
523 zfs_rs_copy(rs, &rs_tmp, rt); in zfs_range_tree_remove_impl()
524 if (zfs_btree_next(&rt->rt_root, &where, &where) != NULL) in zfs_range_tree_remove_impl()
525 zfs_btree_add_idx(&rt->rt_root, &newseg, &where); in zfs_range_tree_remove_impl()
527 zfs_btree_add(&rt->rt_root, &newseg); in zfs_range_tree_remove_impl()
529 if (rt->rt_ops != NULL && rt->rt_ops->rtop_add != NULL) in zfs_range_tree_remove_impl()
530 rt->rt_ops->rtop_add(rt, &newseg, rt->rt_arg); in zfs_range_tree_remove_impl()
533 zfs_rs_set_end(rs, rt, start); in zfs_range_tree_remove_impl()
534 zfs_rs_copy(rs, &rs_tmp, rt); in zfs_range_tree_remove_impl()
537 zfs_rs_set_start(rs, rt, end); in zfs_range_tree_remove_impl()
538 zfs_rs_copy(rs, &rs_tmp, rt); in zfs_range_tree_remove_impl()
540 zfs_btree_remove_idx(&rt->rt_root, &where); in zfs_range_tree_remove_impl()
550 zfs_zfs_rs_set_fill_raw(rs, rt, zfs_rs_get_end_raw(rs, rt) - in zfs_range_tree_remove_impl()
551 zfs_rs_get_start_raw(rs, rt)); in zfs_range_tree_remove_impl()
552 zfs_range_tree_stat_incr(rt, &rs_tmp); in zfs_range_tree_remove_impl()
554 if (rt->rt_ops != NULL && rt->rt_ops->rtop_add != NULL) in zfs_range_tree_remove_impl()
555 rt->rt_ops->rtop_add(rt, &rs_tmp, rt->rt_arg); in zfs_range_tree_remove_impl()
558 rt->rt_space -= size; in zfs_range_tree_remove_impl()
568 zfs_range_tree_remove_fill(zfs_range_tree_t *rt, uint64_t start, uint64_t size) in zfs_range_tree_remove_fill() argument
570 zfs_range_tree_remove_impl(rt, start, size, B_TRUE); in zfs_range_tree_remove_fill()
574 zfs_range_tree_resize_segment(zfs_range_tree_t *rt, zfs_range_seg_t *rs, in zfs_range_tree_resize_segment() argument
577 int64_t delta = newsize - (zfs_rs_get_end(rs, rt) - in zfs_range_tree_resize_segment()
578 zfs_rs_get_start(rs, rt)); in zfs_range_tree_resize_segment()
580 zfs_range_tree_stat_decr(rt, rs); in zfs_range_tree_resize_segment()
581 if (rt->rt_ops != NULL && rt->rt_ops->rtop_remove != NULL) in zfs_range_tree_resize_segment()
582 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_resize_segment()
584 zfs_rs_set_start(rs, rt, newstart); in zfs_range_tree_resize_segment()
585 zfs_rs_set_end(rs, rt, newstart + newsize); in zfs_range_tree_resize_segment()
587 zfs_range_tree_stat_incr(rt, rs); in zfs_range_tree_resize_segment()
588 if (rt->rt_ops != NULL && rt->rt_ops->rtop_add != NULL) in zfs_range_tree_resize_segment()
589 rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); in zfs_range_tree_resize_segment()
591 rt->rt_space += delta; in zfs_range_tree_resize_segment()
595 zfs_range_tree_find_impl(zfs_range_tree_t *rt, uint64_t start, uint64_t size) in zfs_range_tree_find_impl() argument
602 zfs_rs_set_start(&rsearch, rt, start); in zfs_range_tree_find_impl()
603 zfs_rs_set_end(&rsearch, rt, end); in zfs_range_tree_find_impl()
604 return (zfs_btree_find(&rt->rt_root, &rsearch, NULL)); in zfs_range_tree_find_impl()
608 zfs_range_tree_find(zfs_range_tree_t *rt, uint64_t start, uint64_t size) in zfs_range_tree_find() argument
610 if (rt->rt_type == ZFS_RANGE_SEG64) in zfs_range_tree_find()
613 zfs_range_seg_t *rs = zfs_range_tree_find_impl(rt, start, size); in zfs_range_tree_find()
614 if (rs != NULL && zfs_rs_get_start(rs, rt) <= start && in zfs_range_tree_find()
615 zfs_rs_get_end(rs, rt) >= start + size) { in zfs_range_tree_find()
622 zfs_range_tree_verify_not_present(zfs_range_tree_t *rt, uint64_t off, in zfs_range_tree_verify_not_present() argument
625 zfs_range_seg_t *rs = zfs_range_tree_find(rt, off, size); in zfs_range_tree_verify_not_present()
631 zfs_range_tree_contains(zfs_range_tree_t *rt, uint64_t start, uint64_t size) in zfs_range_tree_contains() argument
633 return (zfs_range_tree_find(rt, start, size) != NULL); in zfs_range_tree_contains()
642 zfs_range_tree_find_in(zfs_range_tree_t *rt, uint64_t start, uint64_t size, in zfs_range_tree_find_in() argument
645 if (rt->rt_type == ZFS_RANGE_SEG64) in zfs_range_tree_find_in()
649 zfs_rs_set_start(&rsearch, rt, start); in zfs_range_tree_find_in()
650 zfs_rs_set_end_raw(&rsearch, rt, zfs_rs_get_start_raw(&rsearch, rt) + in zfs_range_tree_find_in()
654 zfs_range_seg_t *rs = zfs_btree_find(&rt->rt_root, &rsearch, &where); in zfs_range_tree_find_in()
657 *osize = MIN(size, zfs_rs_get_end(rs, rt) - start); in zfs_range_tree_find_in()
661 rs = zfs_btree_next(&rt->rt_root, &where, &where); in zfs_range_tree_find_in()
662 if (rs == NULL || zfs_rs_get_start(rs, rt) >= start + size) in zfs_range_tree_find_in()
665 *ostart = zfs_rs_get_start(rs, rt); in zfs_range_tree_find_in()
666 *osize = MIN(start + size, zfs_rs_get_end(rs, rt)) - in zfs_range_tree_find_in()
667 zfs_rs_get_start(rs, rt); in zfs_range_tree_find_in()
676 zfs_range_tree_clear(zfs_range_tree_t *rt, uint64_t start, uint64_t size) in zfs_range_tree_clear() argument
683 if (rt->rt_type == ZFS_RANGE_SEG64) in zfs_range_tree_clear()
686 while ((rs = zfs_range_tree_find_impl(rt, start, size)) != NULL) { in zfs_range_tree_clear()
687 uint64_t free_start = MAX(zfs_rs_get_start(rs, rt), start); in zfs_range_tree_clear()
688 uint64_t free_end = MIN(zfs_rs_get_end(rs, rt), start + size); in zfs_range_tree_clear()
689 zfs_range_tree_remove(rt, free_start, free_end - free_start); in zfs_range_tree_clear()
696 zfs_range_tree_t *rt; in zfs_range_tree_swap() local
701 rt = *rtsrc; in zfs_range_tree_swap()
703 *rtdst = rt; in zfs_range_tree_swap()
707 zfs_range_tree_vacate(zfs_range_tree_t *rt, zfs_range_tree_func_t *func, in zfs_range_tree_vacate() argument
710 if (rt->rt_ops != NULL && rt->rt_ops->rtop_vacate != NULL) in zfs_range_tree_vacate()
711 rt->rt_ops->rtop_vacate(rt, rt->rt_arg); in zfs_range_tree_vacate()
717 while ((rs = zfs_btree_destroy_nodes(&rt->rt_root, &cookie)) != in zfs_range_tree_vacate()
719 func(arg, zfs_rs_get_start(rs, rt), in zfs_range_tree_vacate()
720 zfs_rs_get_end(rs, rt) - zfs_rs_get_start(rs, rt)); in zfs_range_tree_vacate()
723 zfs_btree_clear(&rt->rt_root); in zfs_range_tree_vacate()
726 memset(rt->rt_histogram, 0, sizeof (rt->rt_histogram)); in zfs_range_tree_vacate()
727 rt->rt_space = 0; in zfs_range_tree_vacate()
731 zfs_range_tree_walk(zfs_range_tree_t *rt, zfs_range_tree_func_t *func, in zfs_range_tree_walk() argument
735 for (zfs_range_seg_t *rs = zfs_btree_first(&rt->rt_root, &where); in zfs_range_tree_walk()
736 rs != NULL; rs = zfs_btree_next(&rt->rt_root, &where, &where)) { in zfs_range_tree_walk()
737 func(arg, zfs_rs_get_start(rs, rt), zfs_rs_get_end(rs, rt) - in zfs_range_tree_walk()
738 zfs_rs_get_start(rs, rt)); in zfs_range_tree_walk()
743 zfs_range_tree_first(zfs_range_tree_t *rt) in zfs_range_tree_first() argument
745 return (zfs_btree_first(&rt->rt_root, NULL)); in zfs_range_tree_first()
749 zfs_range_tree_space(zfs_range_tree_t *rt) in zfs_range_tree_space() argument
751 return (rt->rt_space); in zfs_range_tree_space()
755 zfs_range_tree_numsegs(zfs_range_tree_t *rt) in zfs_range_tree_numsegs() argument
757 return ((rt == NULL) ? 0 : zfs_btree_numnodes(&rt->rt_root)); in zfs_range_tree_numsegs()
761 zfs_range_tree_is_empty(zfs_range_tree_t *rt) in zfs_range_tree_is_empty() argument
763 ASSERT(rt != NULL); in zfs_range_tree_is_empty()
764 return (zfs_range_tree_space(rt) == 0); in zfs_range_tree_is_empty()
847 zfs_range_tree_remove_xor_add(zfs_range_tree_t *rt, in zfs_range_tree_remove_xor_add() argument
851 for (zfs_range_seg_t *rs = zfs_btree_first(&rt->rt_root, &where); rs; in zfs_range_tree_remove_xor_add()
852 rs = zfs_btree_next(&rt->rt_root, &where, &where)) { in zfs_range_tree_remove_xor_add()
853 zfs_range_tree_remove_xor_add_segment(zfs_rs_get_start(rs, rt), in zfs_range_tree_remove_xor_add()
854 zfs_rs_get_end(rs, rt), removefrom, addto); in zfs_range_tree_remove_xor_add()
859 zfs_range_tree_min(zfs_range_tree_t *rt) in zfs_range_tree_min() argument
861 zfs_range_seg_t *rs = zfs_btree_first(&rt->rt_root, NULL); in zfs_range_tree_min()
862 return (rs != NULL ? zfs_rs_get_start(rs, rt) : 0); in zfs_range_tree_min()
866 zfs_range_tree_max(zfs_range_tree_t *rt) in zfs_range_tree_max() argument
868 zfs_range_seg_t *rs = zfs_btree_last(&rt->rt_root, NULL); in zfs_range_tree_max()
869 return (rs != NULL ? zfs_rs_get_end(rs, rt) : 0); in zfs_range_tree_max()
873 zfs_range_tree_span(zfs_range_tree_t *rt) in zfs_range_tree_span() argument
875 return (zfs_range_tree_max(rt) - zfs_range_tree_min(rt)); in zfs_range_tree_span()