+ /*
+ * Delete ourselves from the waiting to lock list.
+ */
+ for (block = lock->lf_next;
+ block != NOLOCKF;
+ block = block->lf_block) {
+ if (block->lf_block != lock)
+ continue;
+ block->lf_block = block->lf_block->lf_block;
+ block->lf_spare = block->lf_block->lf_block;
+ if ((block->lf_block->lf_flags & HASBLOCK) == 0)
+ block->lf_flags &= ~HASBLOCK;
+ free(lock, M_LOCKF);
+ return (error);
+ }
+ panic("lf_setlock: lost lock");