summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/range_tree.c
diff options
context:
space:
mode:
authorGvozden Neskovic <neskovic@gmail.com>2019-04-23 18:51:53 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-04-26 19:13:48 +0000
commitc4ab0d3f46036e85ad0700125c5a83cc139f55a3 (patch)
treec8dcb815ca1e1c138f826852abce1200a291c372 /usr/src/uts/common/fs/zfs/range_tree.c
parent95fa23b1c91c8660ef64ef5a20acfcd53961746e (diff)
downloadillumos-joyent-c4ab0d3f46036e85ad0700125c5a83cc139f55a3.tar.gz
10809 Performance optimization of AVL tree comparator functions
Portions contributed by: Jerry Jelinek <jerry.jelinek@joyent.com> Reviewed by: Richard Elling <richard.elling@gmail.com> Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed by: Toomas Soome <tsoome@me.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Approved by: Richard Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src/uts/common/fs/zfs/range_tree.c')
-rw-r--r--usr/src/uts/common/fs/zfs/range_tree.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/usr/src/uts/common/fs/zfs/range_tree.c b/usr/src/uts/common/fs/zfs/range_tree.c
index c99d0e68fc..0a852a9c8d 100644
--- a/usr/src/uts/common/fs/zfs/range_tree.c
+++ b/usr/src/uts/common/fs/zfs/range_tree.c
@@ -109,20 +109,13 @@ range_tree_stat_decr(range_tree_t *rt, range_seg_t *rs)
static int
range_tree_seg_compare(const void *x1, const void *x2)
{
- const range_seg_t *r1 = x1;
- const range_seg_t *r2 = x2;
+ const range_seg_t *r1 = (const range_seg_t *)x1;
+ const range_seg_t *r2 = (const range_seg_t *)x2;
- if (r1->rs_start < r2->rs_start) {
- if (r1->rs_end > r2->rs_start)
- return (0);
- return (-1);
- }
- if (r1->rs_start > r2->rs_start) {
- if (r1->rs_start < r2->rs_end)
- return (0);
- return (1);
- }
- return (0);
+ ASSERT3U(r1->rs_start, <=, r1->rs_end);
+ ASSERT3U(r2->rs_start, <=, r2->rs_end);
+
+ return ((r1->rs_start >= r2->rs_end) - (r1->rs_end <= r2->rs_start));
}
range_tree_t *