Lines Matching refs:overlap

851  * Return non-zero if locks 'x' and 'y' overlap.
994 struct lockf_entry *overlap;
997 LIST_FOREACH(overlap, &state->ls_active, lf_link) {
1002 if (overlap->lf_start > lock->lf_end)
1004 if (!lf_blocks(lock, overlap))
1012 error = lf_add_edge(lock, overlap);
1032 LIST_FOREACH(overlap, &state->ls_pending, lf_link) {
1033 if (!lf_blocks(lock, overlap))
1040 error = lf_add_edge(lock, overlap);
1062 struct lockf_entry *overlap;
1065 LIST_FOREACH(overlap, &state->ls_pending, lf_link) {
1066 if (!lf_blocks(lock, overlap))
1074 error = lf_add_edge(overlap, lock);
1215 struct lockf_entry *overlap, *lf;
1228 * any locks that overlap and are owned by ourselves.
1230 overlap = LIST_FIRST(&state->ls_active);
1232 ovcase = lf_findoverlap(&overlap, lock, SELF);
1236 printf("lf_setlock: overlap %d", ovcase);
1237 lf_print("", overlap);
1242 * 0) no overlap
1243 * 1) overlap == lock
1244 * 2) overlap contains lock
1245 * 3) lock contains overlap
1246 * 4) overlap starts before lock
1247 * 5) overlap ends after lock
1250 case 0: /* no overlap */
1253 case 1: /* overlap == lock */
1260 LIST_REMOVE(overlap, lf_link);
1261 lf_update_dependancies(state, overlap, TRUE,
1263 lf_free_lock(overlap);
1266 case 2: /* overlap contains lock */
1270 lf_split(state, overlap, lock, &granted);
1273 case 3: /* lock contains overlap */
1275 * Delete the overlap and advance to
1278 lf = LIST_NEXT(overlap, lf_link);
1279 LIST_REMOVE(overlap, lf_link);
1280 lf_update_dependancies(state, overlap, TRUE,
1282 lf_free_lock(overlap);
1283 overlap = lf;
1286 case 4: /* overlap starts before lock */
1288 * Just update the overlap end and
1291 lf_set_end(state, overlap, lock->lf_start - 1,
1293 overlap = LIST_NEXT(overlap, lf_link);
1296 case 5: /* overlap ends after lock */
1298 * Change the start of overlap and
1301 lf_set_start(state, overlap, lock->lf_end + 1,
1547 * Generally, find the lock (or an overlap to that lock)
1553 struct lockf_entry *overlap;
1555 overlap = LIST_FIRST(&state->ls_active);
1557 if (overlap == NOLOCKF)
1660 struct lockf_entry *overlap;
1662 LIST_FOREACH(overlap, &state->ls_active, lf_link) {
1667 if (overlap->lf_start > lock->lf_end)
1669 if (!lf_blocks(lock, overlap))
1671 return (overlap);
1678 * any) and return a classification of that overlap.
1681 * *overlap The place in the lock list to start looking
1688 * 0) no overlap
1689 * 1) overlap == lock
1690 * 2) overlap contains lock
1691 * 3) lock contains overlap
1692 * 4) overlap starts before lock
1693 * 5) overlap ends after lock
1695 * If there is an overlapping lock, '*overlap' is set to point at the
1702 lf_findoverlap(struct lockf_entry **overlap, struct lockf_entry *lock, int type)
1708 if ((*overlap) == NOLOCKF) {
1713 lf_print("lf_findoverlap: looking for overlap in", lock);
1718 while (*overlap) {
1719 lf = *overlap;
1724 *overlap = LIST_NEXT(lf, lf_link);
1732 * OK, check for overlap
1735 * 0) no overlap
1736 * 1) overlap == lock
1737 * 2) overlap contains lock
1738 * 3) lock contains overlap
1739 * 4) overlap starts before lock
1740 * 5) overlap ends after lock
1746 printf("no overlap\n");
1748 *overlap = LIST_NEXT(lf, lf_link);
1755 printf("overlap == lock\n");
1764 printf("overlap contains lock\n");
1773 printf("lock contains overlap\n");
1782 printf("overlap starts before lock\n");
1791 printf("overlap ends after lock\n");