Lines Matching full:rs
103 zfs_range_seg_t *rs; in zfs_range_tree_stat_verify() local
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()
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()
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()
294 zfs_range_tree_adjust_fill(zfs_range_tree_t *rt, zfs_range_seg_t *rs, in zfs_range_tree_adjust_fill() argument
297 if (delta < 0 && delta * -1 >= zfs_rs_get_fill(rs, rt)) { in zfs_range_tree_adjust_fill()
301 (longlong_t)zfs_rs_get_start(rs, rt), in zfs_range_tree_adjust_fill()
302 (longlong_t)zfs_rs_get_end(rs, rt)); in zfs_range_tree_adjust_fill()
304 if (zfs_rs_get_fill(rs, rt) + delta > zfs_rs_get_end(rs, rt) - in zfs_range_tree_adjust_fill()
305 zfs_rs_get_start(rs, rt)) { in zfs_range_tree_adjust_fill()
309 (longlong_t)zfs_rs_get_start(rs, rt), in zfs_range_tree_adjust_fill()
310 (longlong_t)zfs_rs_get_end(rs, rt)); in zfs_range_tree_adjust_fill()
314 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_adjust_fill()
315 zfs_rs_set_fill(rs, rt, zfs_rs_get_fill(rs, rt) + delta); in zfs_range_tree_adjust_fill()
317 rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); in zfs_range_tree_adjust_fill()
325 zfs_range_seg_t *rs_before, *rs_after, *rs; in zfs_range_tree_add_impl() local
337 rs = zfs_btree_find(&rt->rt_root, &rsearch, &where); in zfs_range_tree_add_impl()
347 if (rs != NULL) { in zfs_range_tree_add_impl()
348 uint64_t rstart = zfs_rs_get_start(rs, rt); in zfs_range_tree_add_impl()
349 uint64_t rend = zfs_rs_get_end(rs, rt); in zfs_range_tree_add_impl()
360 zfs_range_tree_adjust_fill(rt, rs, fill); in zfs_range_tree_add_impl()
365 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_add_impl()
367 zfs_range_tree_stat_decr(rt, rs); in zfs_range_tree_add_impl()
370 fill += zfs_rs_get_fill(rs, rt); in zfs_range_tree_add_impl()
375 zfs_btree_remove(&rt->rt_root, rs); in zfs_range_tree_add_impl()
380 ASSERT0P(rs); in zfs_range_tree_add_impl()
424 rs = rs_after; in zfs_range_tree_add_impl()
434 rs = rs_before; in zfs_range_tree_add_impl()
444 rs = rs_after; in zfs_range_tree_add_impl()
446 rs = &tmp; in zfs_range_tree_add_impl()
448 zfs_rs_set_start(rs, rt, start); in zfs_range_tree_add_impl()
449 zfs_rs_set_end(rs, rt, end); in zfs_range_tree_add_impl()
450 zfs_rs_set_fill(rs, rt, fill); in zfs_range_tree_add_impl()
451 zfs_btree_add_idx(&rt->rt_root, rs, &where); in zfs_range_tree_add_impl()
455 ASSERT3U(zfs_rs_get_fill(rs, rt), <=, zfs_rs_get_end(rs, rt) - in zfs_range_tree_add_impl()
456 zfs_rs_get_start(rs, rt)); in zfs_range_tree_add_impl()
458 ASSERT3U(zfs_rs_get_fill(rs, rt), ==, zfs_rs_get_end(rs, rt) - in zfs_range_tree_add_impl()
459 zfs_rs_get_start(rs, rt)); in zfs_range_tree_add_impl()
463 rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); in zfs_range_tree_add_impl()
465 zfs_range_tree_stat_incr(rt, rs); in zfs_range_tree_add_impl()
480 zfs_range_seg_t *rs; in zfs_range_tree_remove_impl() local
493 rs = zfs_btree_find(&rt->rt_root, &rsearch, &where); in zfs_range_tree_remove_impl()
496 if (rs == NULL) { in zfs_range_tree_remove_impl()
503 rstart = zfs_rs_get_start(rs, rt); in zfs_range_tree_remove_impl()
504 rend = zfs_rs_get_end(rs, rt); in zfs_range_tree_remove_impl()
514 if (zfs_rs_get_fill(rs, rt) == size) { in zfs_range_tree_remove_impl()
519 zfs_range_tree_adjust_fill(rt, rs, -size); in zfs_range_tree_remove_impl()
546 zfs_range_tree_stat_decr(rt, rs); in zfs_range_tree_remove_impl()
549 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_remove_impl()
554 zfs_rs_set_end_raw(&newseg, rt, zfs_rs_get_end_raw(rs, rt)); in zfs_range_tree_remove_impl()
555 zfs_rs_set_fill(&newseg, rt, zfs_rs_get_end(rs, rt) - end); in zfs_range_tree_remove_impl()
559 zfs_rs_set_end(rs, rt, start); in zfs_range_tree_remove_impl()
561 zfs_rs_copy(rs, &rs_tmp, rt); in zfs_range_tree_remove_impl()
571 zfs_rs_set_end(rs, rt, start); in zfs_range_tree_remove_impl()
572 zfs_rs_copy(rs, &rs_tmp, rt); in zfs_range_tree_remove_impl()
575 zfs_rs_set_start(rs, rt, end); in zfs_range_tree_remove_impl()
576 zfs_rs_copy(rs, &rs_tmp, rt); in zfs_range_tree_remove_impl()
579 rs = NULL; in zfs_range_tree_remove_impl()
582 if (rs != NULL) { in zfs_range_tree_remove_impl()
588 zfs_rs_set_fill_raw(rs, rt, zfs_rs_get_end_raw(rs, rt) - in zfs_range_tree_remove_impl()
589 zfs_rs_get_start_raw(rs, rt)); in zfs_range_tree_remove_impl()
612 zfs_range_tree_resize_segment(zfs_range_tree_t *rt, zfs_range_seg_t *rs, in zfs_range_tree_resize_segment() argument
615 int64_t delta = newsize - (zfs_rs_get_end(rs, rt) - in zfs_range_tree_resize_segment()
616 zfs_rs_get_start(rs, rt)); in zfs_range_tree_resize_segment()
618 zfs_range_tree_stat_decr(rt, rs); in zfs_range_tree_resize_segment()
620 rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); in zfs_range_tree_resize_segment()
622 zfs_rs_set_start(rs, rt, newstart); in zfs_range_tree_resize_segment()
623 zfs_rs_set_end(rs, rt, newstart + newsize); in zfs_range_tree_resize_segment()
625 zfs_range_tree_stat_incr(rt, rs); in zfs_range_tree_resize_segment()
627 rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); in zfs_range_tree_resize_segment()
651 zfs_range_seg_t *rs = zfs_range_tree_find_impl(rt, start, size); in zfs_range_tree_find() local
652 if (rs != NULL && zfs_rs_get_start(rs, rt) <= start && in zfs_range_tree_find()
653 zfs_rs_get_end(rs, rt) >= start + size) { in zfs_range_tree_find()
654 return (rs); in zfs_range_tree_find()
663 zfs_range_seg_t *rs = zfs_range_tree_find(rt, off, size); in zfs_range_tree_verify_not_present() local
664 if (rs != NULL) in zfs_range_tree_verify_not_present()
665 panic("segment already in tree; rs=%p", (void *)rs); in zfs_range_tree_verify_not_present()
692 zfs_range_seg_t *rs = zfs_btree_find(&rt->rt_root, &rsearch, &where); in zfs_range_tree_find_in() local
693 if (rs != NULL) { in zfs_range_tree_find_in()
695 *osize = MIN(size, zfs_rs_get_end(rs, rt) - start); in zfs_range_tree_find_in()
699 rs = zfs_btree_next(&rt->rt_root, &where, &where); in zfs_range_tree_find_in()
700 if (rs == NULL || zfs_rs_get_start(rs, rt) >= start + size) in zfs_range_tree_find_in()
703 *ostart = zfs_rs_get_start(rs, rt); in zfs_range_tree_find_in()
704 *osize = MIN(start + size, zfs_rs_get_end(rs, rt)) - in zfs_range_tree_find_in()
705 zfs_rs_get_start(rs, rt); in zfs_range_tree_find_in()
716 zfs_range_seg_t *rs; in zfs_range_tree_clear() local
724 while ((rs = zfs_range_tree_find_impl(rt, start, size)) != NULL) { in zfs_range_tree_clear()
725 uint64_t free_start = MAX(zfs_rs_get_start(rs, rt), start); in zfs_range_tree_clear()
726 uint64_t free_end = MIN(zfs_rs_get_end(rs, rt), start + size); in zfs_range_tree_clear()
752 zfs_range_seg_t *rs; in zfs_range_tree_vacate() local
755 while ((rs = zfs_btree_destroy_nodes(&rt->rt_root, &cookie)) != in zfs_range_tree_vacate()
757 func(arg, zfs_rs_get_start(rs, rt), in zfs_range_tree_vacate()
758 zfs_rs_get_end(rs, rt) - zfs_rs_get_start(rs, rt)); in zfs_range_tree_vacate()
773 for (zfs_range_seg_t *rs = zfs_btree_first(&rt->rt_root, &where); in zfs_range_tree_walk() local
774 rs != NULL; rs = zfs_btree_next(&rt->rt_root, &where, &where)) { in zfs_range_tree_walk()
775 func(arg, zfs_rs_get_start(rs, rt), zfs_rs_get_end(rs, rt) - in zfs_range_tree_walk()
776 zfs_rs_get_start(rs, rt)); in zfs_range_tree_walk()
843 zfs_range_seg_max_t rs; in zfs_range_tree_remove_xor_add_segment() local
844 zfs_rs_copy(curr, &rs, removefrom); in zfs_range_tree_remove_xor_add_segment()
852 next = zfs_btree_find(&removefrom->rt_root, &rs, &where); in zfs_range_tree_remove_xor_add_segment()
864 ASSERT(start == end || start == zfs_rs_get_end(&rs, in zfs_range_tree_remove_xor_add_segment()
889 for (zfs_range_seg_t *rs = zfs_btree_first(&rt->rt_root, &where); rs; in zfs_range_tree_remove_xor_add() local
890 rs = zfs_btree_next(&rt->rt_root, &where, &where)) { in zfs_range_tree_remove_xor_add()
891 zfs_range_tree_remove_xor_add_segment(zfs_rs_get_start(rs, rt), in zfs_range_tree_remove_xor_add()
892 zfs_rs_get_end(rs, rt), removefrom, addto); in zfs_range_tree_remove_xor_add()
899 zfs_range_seg_t *rs = zfs_btree_first(&rt->rt_root, NULL); in zfs_range_tree_min() local
900 return (rs != NULL ? zfs_rs_get_start(rs, rt) : 0); in zfs_range_tree_min()
906 zfs_range_seg_t *rs = zfs_btree_last(&rt->rt_root, NULL); in zfs_range_tree_max() local
907 return (rs != NULL ? zfs_rs_get_end(rs, rt) : 0); in zfs_range_tree_max()