Lines Matching full:lo
57 int lo; in badblocks_check() local
73 lo = 0; in badblocks_check()
77 /* Binary search between lo and hi for 'target' in badblocks_check()
80 /* INVARIANT: ranges before 'lo' and at-or-after 'hi' in badblocks_check()
82 * VARIANT: hi-lo is the number of possible in badblocks_check()
85 while (hi - lo > 1) { in badblocks_check()
86 int mid = (lo + hi) / 2; in badblocks_check()
93 lo = mid; in badblocks_check()
98 /* 'lo' might be the last that started before target, but 'hi' isn't */ in badblocks_check()
99 if (hi > lo) { in badblocks_check()
103 while (lo >= 0 && in badblocks_check()
104 BB_OFFSET(p[lo]) + BB_LEN(p[lo]) > s) { in badblocks_check()
105 if (BB_OFFSET(p[lo]) < target) { in badblocks_check()
109 if (rv != -1 && BB_ACK(p[lo])) in badblocks_check()
113 *first_bad = BB_OFFSET(p[lo]); in badblocks_check()
114 *bad_sectors = BB_LEN(p[lo]); in badblocks_check()
116 lo--; in badblocks_check()
166 int lo, hi; in badblocks_set() local
187 lo = 0; in badblocks_set()
190 while (hi - lo > 1) { in badblocks_set()
191 int mid = (lo + hi) / 2; in badblocks_set()
195 lo = mid; in badblocks_set()
199 if (hi > lo && BB_OFFSET(p[lo]) > s) in badblocks_set()
200 hi = lo; in badblocks_set()
202 if (hi > lo) { in badblocks_set()
206 sector_t a = BB_OFFSET(p[lo]); in badblocks_set()
207 sector_t e = a + BB_LEN(p[lo]); in badblocks_set()
208 int ack = BB_ACK(p[lo]); in badblocks_set()
221 p[lo] = BB_MAKE(a, e-a, ack); in badblocks_set()
225 * make p[lo] maximal in badblocks_set()
227 if (BB_LEN(p[lo]) != BB_MAX_LEN) in badblocks_set()
228 p[lo] = BB_MAKE(a, BB_MAX_LEN, ack); in badblocks_set()
260 lo = hi; in badblocks_set()
265 /* we might be able to combine lo and hi */ in badblocks_set()
266 /* Note: 's' is at the end of 'lo' */ in badblocks_set()
268 int lolen = BB_LEN(p[lo]); in badblocks_set()
274 int ack = BB_ACK(p[lo]) && BB_ACK(p[hi]); in badblocks_set()
276 p[lo] = BB_MAKE(BB_OFFSET(p[lo]), newlen, ack); in badblocks_set()
333 int lo, hi; in badblocks_clear() local
352 lo = 0; in badblocks_clear()
355 while (hi - lo > 1) { in badblocks_clear()
356 int mid = (lo + hi) / 2; in badblocks_clear()
360 lo = mid; in badblocks_clear()
364 if (hi > lo) { in badblocks_clear()
365 /* p[lo] is the last range that could overlap the in badblocks_clear()
369 if ((BB_OFFSET(p[lo]) + BB_LEN(p[lo]) > target) && in badblocks_clear()
370 (BB_OFFSET(p[lo]) < target)) { in badblocks_clear()
372 int ack = BB_ACK(p[lo]); in badblocks_clear()
373 sector_t a = BB_OFFSET(p[lo]); in badblocks_clear()
374 sector_t end = a + BB_LEN(p[lo]); in badblocks_clear()
382 memmove(p+lo+1, p+lo, (bb->count - lo) * 8); in badblocks_clear()
384 p[lo] = BB_MAKE(a, s-a, ack); in badblocks_clear()
385 lo++; in badblocks_clear()
387 p[lo] = BB_MAKE(target, end - target, ack); in badblocks_clear()
389 hi = lo; in badblocks_clear()
390 lo--; in badblocks_clear()
392 while (lo >= 0 && in badblocks_clear()
393 (BB_OFFSET(p[lo]) + BB_LEN(p[lo]) > s) && in badblocks_clear()
394 (BB_OFFSET(p[lo]) < target)) { in badblocks_clear()
396 if (BB_OFFSET(p[lo]) < s) { in badblocks_clear()
398 int ack = BB_ACK(p[lo]); in badblocks_clear()
399 sector_t start = BB_OFFSET(p[lo]); in badblocks_clear()
401 p[lo] = BB_MAKE(start, s - start, ack); in badblocks_clear()
405 lo--; in badblocks_clear()
407 /* 'lo' is strictly before, 'hi' is strictly after, in badblocks_clear()
410 if (hi - lo > 1) { in badblocks_clear()
411 memmove(p+lo+1, p+hi, (bb->count - hi) * 8); in badblocks_clear()
412 bb->count -= (hi - lo - 1); in badblocks_clear()