diff options
author | Matthew Ahrens <mahrens@delphix.com> | 2018-02-26 23:33:55 +0000 |
---|---|---|
committer | Brian Behlendorf <behlendorf1@llnl.gov> | 2018-05-24 17:18:07 +0000 |
commit | 0dc2f70c5cece6ef2474e14552111ae098d9f5b4 (patch) | |
tree | 8414edcb42c28aecbc4e9422eb02d15d7e98d035 /module/zfs/range_tree.c | |
parent | ba863d0be4cbfbea938b10e49fb6ff459ac9ec20 (diff) | |
download | src-0dc2f70c5cece6ef2474e14552111ae098d9f5b4.tar.gz src-0dc2f70c5cece6ef2474e14552111ae098d9f5b4.zip |
Diffstat (limited to 'module/zfs/range_tree.c')
-rw-r--r-- | module/zfs/range_tree.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/module/zfs/range_tree.c b/module/zfs/range_tree.c index baa655d39a59..448d00c1e5d4 100644 --- a/module/zfs/range_tree.c +++ b/module/zfs/range_tree.c @@ -491,7 +491,6 @@ range_tree_resize_segment(range_tree_t *rt, range_seg_t *rs, static range_seg_t * range_tree_find_impl(range_tree_t *rt, uint64_t start, uint64_t size) { - avl_index_t where; range_seg_t rsearch; uint64_t end = start + size; @@ -499,7 +498,7 @@ range_tree_find_impl(range_tree_t *rt, uint64_t start, uint64_t size) rsearch.rs_start = start; rsearch.rs_end = end; - return (avl_find(&rt->rt_root, &rsearch, &where)); + return (avl_find(&rt->rt_root, &rsearch, NULL)); } range_seg_t * @@ -599,6 +598,13 @@ range_tree_space(range_tree_t *rt) return (rt->rt_space); } +boolean_t +range_tree_is_empty(range_tree_t *rt) +{ + ASSERT(rt != NULL); + return (range_tree_space(rt) == 0); +} + /* Generic range tree functions for maintaining segments in an AVL tree. */ void rt_avl_create(range_tree_t *rt, void *arg) @@ -643,3 +649,23 @@ rt_avl_vacate(range_tree_t *rt, void *arg) */ rt_avl_create(rt, arg); } + +uint64_t +range_tree_min(range_tree_t *rt) +{ + range_seg_t *rs = avl_first(&rt->rt_root); + return (rs != NULL ? rs->rs_start : 0); +} + +uint64_t +range_tree_max(range_tree_t *rt) +{ + range_seg_t *rs = avl_last(&rt->rt_root); + return (rs != NULL ? rs->rs_end : 0); +} + +uint64_t +range_tree_span(range_tree_t *rt) +{ + return (range_tree_max(rt) - range_tree_min(rt)); +} |