Lines Matching refs:overlap

848  * Return non-zero if locks 'x' and 'y' overlap.
991 struct lockf_entry *overlap;
994 LIST_FOREACH(overlap, &state->ls_active, lf_link) {
999 if (overlap->lf_start > lock->lf_end)
1001 if (!lf_blocks(lock, overlap))
1009 error = lf_add_edge(lock, overlap);
1029 LIST_FOREACH(overlap, &state->ls_pending, lf_link) {
1030 if (!lf_blocks(lock, overlap))
1037 error = lf_add_edge(lock, overlap);
1059 struct lockf_entry *overlap;
1068 LIST_FOREACH(overlap, &state->ls_pending, lf_link) {
1069 if (!lf_blocks(lock, overlap))
1077 error = lf_add_edge(overlap, lock);
1219 struct lockf_entry *overlap, *lf;
1232 * any locks that overlap and are owned by ourselves.
1234 overlap = LIST_FIRST(&state->ls_active);
1236 ovcase = lf_findoverlap(&overlap, lock, SELF);
1240 printf("lf_setlock: overlap %d", ovcase);
1241 lf_print("", overlap);
1246 * 0) no overlap
1247 * 1) overlap == lock
1248 * 2) overlap contains lock
1249 * 3) lock contains overlap
1250 * 4) overlap starts before lock
1251 * 5) overlap ends after lock
1254 case 0: /* no overlap */
1257 case 1: /* overlap == lock */
1264 LIST_REMOVE(overlap, lf_link);
1265 lf_update_dependancies(state, overlap, TRUE,
1267 lf_free_lock(overlap);
1270 case 2: /* overlap contains lock */
1274 lf_split(state, overlap, lock, &granted);
1277 case 3: /* lock contains overlap */
1279 * Delete the overlap and advance to
1282 lf = LIST_NEXT(overlap, lf_link);
1283 LIST_REMOVE(overlap, lf_link);
1284 lf_update_dependancies(state, overlap, TRUE,
1286 lf_free_lock(overlap);
1287 overlap = lf;
1290 case 4: /* overlap starts before lock */
1292 * Just update the overlap end and
1295 lf_set_end(state, overlap, lock->lf_start - 1,
1297 overlap = LIST_NEXT(overlap, lf_link);
1300 case 5: /* overlap ends after lock */
1302 * Change the start of overlap and
1305 lf_set_start(state, overlap, lock->lf_end + 1,
1549 * Generally, find the lock (or an overlap to that lock)
1555 struct lockf_entry *overlap;
1557 overlap = LIST_FIRST(&state->ls_active);
1559 if (overlap == NOLOCKF)
1662 struct lockf_entry *overlap;
1664 LIST_FOREACH(overlap, &state->ls_active, lf_link) {
1669 if (overlap->lf_start > lock->lf_end)
1671 if (!lf_blocks(lock, overlap))
1673 return (overlap);
1680 * any) and return a classification of that overlap.
1683 * *overlap The place in the lock list to start looking
1690 * 0) no overlap
1691 * 1) overlap == lock
1692 * 2) overlap contains lock
1693 * 3) lock contains overlap
1694 * 4) overlap starts before lock
1695 * 5) overlap ends after lock
1697 * If there is an overlapping lock, '*overlap' is set to point at the
1704 lf_findoverlap(struct lockf_entry **overlap, struct lockf_entry *lock, int type)
1710 if ((*overlap) == NOLOCKF) {
1715 lf_print("lf_findoverlap: looking for overlap in", lock);
1720 while (*overlap) {
1721 lf = *overlap;
1726 *overlap = LIST_NEXT(lf, lf_link);
1734 * OK, check for overlap
1737 * 0) no overlap
1738 * 1) overlap == lock
1739 * 2) overlap contains lock
1740 * 3) lock contains overlap
1741 * 4) overlap starts before lock
1742 * 5) overlap ends after lock
1748 printf("no overlap\n");
1750 *overlap = LIST_NEXT(lf, lf_link);
1757 printf("overlap == lock\n");
1766 printf("overlap contains lock\n");
1775 printf("lock contains overlap\n");
1784 printf("overlap starts before lock\n");
1793 printf("overlap ends after lock\n");