Lines Matching full:overlap
833 * Return non-zero if locks 'x' and 'y' overlap.
975 struct lockf_entry *overlap; in lf_add_outgoing() local
978 LIST_FOREACH(overlap, &state->ls_active, lf_link) { in lf_add_outgoing()
983 if (overlap->lf_start > lock->lf_end) in lf_add_outgoing()
985 if (!lf_blocks(lock, overlap)) in lf_add_outgoing()
993 error = lf_add_edge(lock, overlap); in lf_add_outgoing()
1013 LIST_FOREACH(overlap, &state->ls_pending, lf_link) { in lf_add_outgoing()
1014 if (!lf_blocks(lock, overlap)) in lf_add_outgoing()
1021 error = lf_add_edge(lock, overlap); in lf_add_outgoing()
1043 struct lockf_entry *overlap; in lf_add_incoming() local
1052 LIST_FOREACH(overlap, &state->ls_pending, lf_link) { in lf_add_incoming()
1053 if (!lf_blocks(lock, overlap)) in lf_add_incoming()
1061 error = lf_add_edge(overlap, lock); in lf_add_incoming()
1203 struct lockf_entry *overlap, *lf; in lf_activate_lock() local
1216 * any locks that overlap and are owned by ourselves. in lf_activate_lock()
1218 overlap = LIST_FIRST(&state->ls_active); in lf_activate_lock()
1220 ovcase = lf_findoverlap(&overlap, lock, SELF); in lf_activate_lock()
1224 printf("lf_setlock: overlap %d", ovcase); in lf_activate_lock()
1225 lf_print("", overlap); in lf_activate_lock()
1230 * 0) no overlap in lf_activate_lock()
1231 * 1) overlap == lock in lf_activate_lock()
1232 * 2) overlap contains lock in lf_activate_lock()
1233 * 3) lock contains overlap in lf_activate_lock()
1234 * 4) overlap starts before lock in lf_activate_lock()
1235 * 5) overlap ends after lock in lf_activate_lock()
1238 case 0: /* no overlap */ in lf_activate_lock()
1241 case 1: /* overlap == lock */ in lf_activate_lock()
1248 LIST_REMOVE(overlap, lf_link); in lf_activate_lock()
1249 lf_update_dependancies(state, overlap, TRUE, in lf_activate_lock()
1251 lf_free_lock(overlap); in lf_activate_lock()
1254 case 2: /* overlap contains lock */ in lf_activate_lock()
1258 lf_split(state, overlap, lock, &granted); in lf_activate_lock()
1261 case 3: /* lock contains overlap */ in lf_activate_lock()
1263 * Delete the overlap and advance to in lf_activate_lock()
1266 lf = LIST_NEXT(overlap, lf_link); in lf_activate_lock()
1267 LIST_REMOVE(overlap, lf_link); in lf_activate_lock()
1268 lf_update_dependancies(state, overlap, TRUE, in lf_activate_lock()
1270 lf_free_lock(overlap); in lf_activate_lock()
1271 overlap = lf; in lf_activate_lock()
1274 case 4: /* overlap starts before lock */ in lf_activate_lock()
1276 * Just update the overlap end and in lf_activate_lock()
1279 lf_set_end(state, overlap, lock->lf_start - 1, in lf_activate_lock()
1281 overlap = LIST_NEXT(overlap, lf_link); in lf_activate_lock()
1284 case 5: /* overlap ends after lock */ in lf_activate_lock()
1286 * Change the start of overlap and in lf_activate_lock()
1289 lf_set_start(state, overlap, lock->lf_end + 1, in lf_activate_lock()
1533 * Generally, find the lock (or an overlap to that lock)
1539 struct lockf_entry *overlap; in lf_clearlock() local
1541 overlap = LIST_FIRST(&state->ls_active); in lf_clearlock()
1543 if (overlap == NOLOCKF) in lf_clearlock()
1646 struct lockf_entry *overlap; in lf_getblock() local
1648 LIST_FOREACH(overlap, &state->ls_active, lf_link) { in lf_getblock()
1653 if (overlap->lf_start > lock->lf_end) in lf_getblock()
1655 if (!lf_blocks(lock, overlap)) in lf_getblock()
1657 return (overlap); in lf_getblock()
1664 * any) and return a classification of that overlap.
1667 * *overlap The place in the lock list to start looking
1674 * 0) no overlap
1675 * 1) overlap == lock
1676 * 2) overlap contains lock
1677 * 3) lock contains overlap
1678 * 4) overlap starts before lock
1679 * 5) overlap ends after lock
1681 * If there is an overlapping lock, '*overlap' is set to point at the
1688 lf_findoverlap(struct lockf_entry **overlap, struct lockf_entry *lock, int type) in lf_findoverlap() argument
1694 if ((*overlap) == NOLOCKF) { in lf_findoverlap()
1699 lf_print("lf_findoverlap: looking for overlap in", lock); in lf_findoverlap()
1704 while (*overlap) { in lf_findoverlap()
1705 lf = *overlap; in lf_findoverlap()
1710 *overlap = LIST_NEXT(lf, lf_link); in lf_findoverlap()
1718 * OK, check for overlap in lf_findoverlap()
1721 * 0) no overlap in lf_findoverlap()
1722 * 1) overlap == lock in lf_findoverlap()
1723 * 2) overlap contains lock in lf_findoverlap()
1724 * 3) lock contains overlap in lf_findoverlap()
1725 * 4) overlap starts before lock in lf_findoverlap()
1726 * 5) overlap ends after lock in lf_findoverlap()
1732 printf("no overlap\n"); in lf_findoverlap()
1734 *overlap = LIST_NEXT(lf, lf_link); in lf_findoverlap()
1741 printf("overlap == lock\n"); in lf_findoverlap()
1750 printf("overlap contains lock\n"); in lf_findoverlap()
1759 printf("lock contains overlap\n"); in lf_findoverlap()
1768 printf("overlap starts before lock\n"); in lf_findoverlap()
1777 printf("overlap ends after lock\n"); in lf_findoverlap()