Lines Matching defs:overlap

235     struct lockf ***prev, struct lockf **overlap)
239 *overlap = lf;
244 lf_print("lf_findoverlap: looking for overlap in", lock);
252 *overlap = lf = lf->lf_next;
260 * OK, check for overlap
263 * 0) no overlap
264 * 1) overlap == lock
265 * 2) overlap contains lock
266 * 3) lock contains overlap
267 * 4) overlap starts before lock
268 * 5) overlap ends after lock
275 printf("no overlap\n");
280 *overlap = lf = lf->lf_next;
287 printf("overlap == lock\n");
297 printf("overlap contains lock\n");
307 printf("lock contains overlap\n");
316 printf("overlap starts before lock\n");
326 printf("overlap ends after lock\n");
408 * Generally, find the lock (or an overlap to that lock)
416 struct lockf *overlap, **prev;
429 &prev, &overlap)) != 0) {
433 lf_wakelock(overlap);
437 case 1: /* overlap == lock */
438 *prev = overlap->lf_next;
439 lf_free(overlap);
442 case 2: /* overlap contains lock: split it */
443 if (overlap->lf_start == unlock->lf_start) {
444 overlap->lf_start = unlock->lf_end + 1;
447 lf_split(overlap, unlock, sparelock);
448 overlap->lf_next = unlock->lf_next;
451 case 3: /* lock contains overlap */
452 *prev = overlap->lf_next;
453 lf = overlap->lf_next;
454 lf_free(overlap);
457 case 4: /* overlap starts before lock */
458 overlap->lf_end = unlock->lf_start - 1;
459 prev = &overlap->lf_next;
460 lf = overlap->lf_next;
463 case 5: /* overlap ends after lock */
464 overlap->lf_start = unlock->lf_end + 1;
483 struct lockf **prev, *overlap, *lf = *(lock->lf_head);
486 while (lf_findoverlap(lf, lock, OTHERS, &prev, &overlap) != 0) {
488 * We've found an overlap, see if it blocks us
490 if ((lock->lf_type == F_WRLCK || overlap->lf_type == F_WRLCK))
491 return overlap;
496 lf = overlap->lf_next;
510 struct lockf **prev, *overlap, *ltmp;
633 * Handle any locks that overlap and are owned by ourselves.
639 ovcase = lf_findoverlap(block, lock, SELF, &prev, &overlap);
641 block = overlap->lf_next;
644 * 0) no overlap
645 * 1) overlap == lock
646 * 2) overlap contains lock
647 * 3) lock contains overlap
648 * 4) overlap starts before lock
649 * 5) overlap ends after lock
652 case 0: /* no overlap */
655 lock->lf_next = overlap;
659 case 1: /* overlap == lock */
665 overlap->lf_type == F_WRLCK)
666 lf_wakelock(overlap);
667 overlap->lf_type = lock->lf_type;
669 lock = overlap; /* for debug output below */
672 case 2: /* overlap contains lock */
676 if (overlap->lf_type == lock->lf_type) {
678 lock = overlap; /* for debug output below */
681 if (overlap->lf_start == lock->lf_start) {
683 lock->lf_next = overlap;
684 overlap->lf_start = lock->lf_end + 1;
686 lf_split(overlap, lock, sparelock);
687 lf_wakelock(overlap);
690 case 3: /* lock contains overlap */
696 overlap->lf_type == F_WRLCK) {
697 lf_wakelock(overlap);
700 TAILQ_FIRST(&overlap->lf_blkhd))
702 KASSERT(ltmp->lf_next == overlap);
703 TAILQ_REMOVE(&overlap->lf_blkhd, ltmp,
712 * overlap.
716 lock->lf_next = overlap->lf_next;
720 *prev = overlap->lf_next;
721 lf_free(overlap);
724 case 4: /* overlap starts before lock */
726 * Add lock after overlap on the list.
728 lock->lf_next = overlap->lf_next;
729 overlap->lf_next = lock;
730 overlap->lf_end = lock->lf_start - 1;
732 lf_wakelock(overlap);
736 case 5: /* overlap ends after lock */
738 * Add the new lock before overlap.
742 lock->lf_next = overlap;
744 overlap->lf_start = lock->lf_end + 1;
745 lf_wakelock(overlap);