Lines Matching full:lo
469 /* Each level of quicksort uses a lo and a hi index */ in xfarray_sortinfo_alloc()
544 xfarray_idx_t lo, in xfarray_isort() argument
548 loff_t lo_pos = xfarray_pos(si->array, lo); in xfarray_isort()
549 loff_t len = xfarray_pos(si->array, hi - lo + 1); in xfarray_isort()
552 trace_xfarray_isort(si, lo, hi); in xfarray_isort()
560 sort(scratch, hi - lo + 1, si->array->obj_size, si->cmp_fn, NULL); in xfarray_isort()
605 xfarray_idx_t lo, in xfarray_want_pagesort() argument
613 lo_page = xfarray_pos(si->array, lo) >> PAGE_SHIFT; in xfarray_want_pagesort()
624 xfarray_idx_t lo, in xfarray_pagesort() argument
628 loff_t lo_pos = xfarray_pos(si->array, lo); in xfarray_pagesort()
629 uint64_t len = xfarray_pos(si->array, hi - lo); in xfarray_pagesort()
632 trace_xfarray_pagesort(si, lo, hi); in xfarray_pagesort()
641 sort(startp, hi - lo + 1, si->array->obj_size, si->cmp_fn, NULL); in xfarray_pagesort()
683 * Find a pivot value for quicksort partitioning, swap it with a[lo], and save
694 xfarray_idx_t lo, in xfarray_qsort_pivot() argument
701 xfarray_idx_t step = (hi - lo) / (XFARRAY_QSORT_PIVOT_NR - 1); in xfarray_qsort_pivot()
713 *idxp = lo; in xfarray_qsort_pivot()
716 *idxp = lo + (i * step); in xfarray_qsort_pivot()
761 /* If the pivot record we chose was already in a[lo] then we're done. */ in xfarray_qsort_pivot()
764 if (*idxp == lo) in xfarray_qsort_pivot()
768 * Find the cached copy of a[lo] in the pivot array so that we can swap in xfarray_qsort_pivot()
769 * a[lo] and a[pivot]. in xfarray_qsort_pivot()
773 if (*idxp == lo) in xfarray_qsort_pivot()
781 /* Swap a[lo] and a[pivot]. */ in xfarray_qsort_pivot()
782 error = xfarray_sort_store(si, lo, pivot); in xfarray_qsort_pivot()
794 * the unsorted values between a[lo + 1] and a[end[i]], and we tweak the
796 * a[lo] so that those values will be sorted when we pop the stack.
803 xfarray_idx_t lo, in xfarray_qsort_push() argument
815 si_lo[si->stack_depth + 1] = lo + 1; in xfarray_qsort_push()
817 si_hi[si->stack_depth++] = lo - 1; in xfarray_qsort_push()
918 * 5. This optimization is specific to the implementation. When converging lo
939 xfarray_idx_t lo, hi; in xfarray_sort() local
955 lo = si_lo[si->stack_depth]; in xfarray_sort()
958 trace_xfarray_qsort(si, lo, hi); in xfarray_sort()
961 if (lo >= hi) { in xfarray_sort()
970 if (xfarray_want_pagesort(si, lo, hi)) { in xfarray_sort()
971 error = xfarray_pagesort(si, lo, hi); in xfarray_sort()
979 if (xfarray_want_isort(si, lo, hi)) { in xfarray_sort()
980 error = xfarray_isort(si, lo, hi); in xfarray_sort()
987 /* Pick a pivot, move it to a[lo] and stash it. */ in xfarray_sort()
988 error = xfarray_qsort_pivot(si, lo, hi); in xfarray_sort()
993 * Rearrange a[lo..hi] such that everything smaller than the in xfarray_sort()
997 while (lo < hi) { in xfarray_sort()
1006 lo < hi) { in xfarray_sort()
1020 /* Copy that item (a[hi]) to a[lo]. */ in xfarray_sort()
1021 if (lo < hi) { in xfarray_sort()
1022 error = xfarray_sort_store(si, lo++, scratch); in xfarray_sort()
1028 * Increment lo until it finds an a[lo] greater than in xfarray_sort()
1031 error = xfarray_sort_load_cached(si, lo, scratch); in xfarray_sort()
1035 lo < hi) { in xfarray_sort()
1036 lo++; in xfarray_sort()
1037 error = xfarray_sort_load_cached(si, lo, in xfarray_sort()
1049 /* Copy that item (a[lo]) to a[hi]. */ in xfarray_sort()
1050 if (lo < hi) { in xfarray_sort()
1061 * Put our pivot value in the correct place at a[lo]. All in xfarray_sort()
1062 * values between a[beg[i]] and a[lo - 1] should be less than in xfarray_sort()
1063 * the pivot; and all values between a[lo + 1] and a[end[i]-1] in xfarray_sort()
1066 error = xfarray_sort_store(si, lo, pivot); in xfarray_sort()
1071 error = xfarray_qsort_push(si, si_lo, si_hi, lo, hi); in xfarray_sort()