diff options
| author | Gvozden Neskovic <neskovic@gmail.com> | 2019-04-23 18:51:53 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-04-26 19:13:48 +0000 |
| commit | c4ab0d3f46036e85ad0700125c5a83cc139f55a3 (patch) | |
| tree | c8dcb815ca1e1c138f826852abce1200a291c372 /usr/src/uts/common/fs/zfs/range_tree.c | |
| parent | 95fa23b1c91c8660ef64ef5a20acfcd53961746e (diff) | |
| download | illumos-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.c | 19 |
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 * |
