freebsd-nq/sys/fs/unionfs
KATO Takenori a9320ff3bd Revised fix for locking violation when unionfs calls vput with
UN_KLOCK flag.

When UN_KLOCK is set, VOP_UNLOCK should keep uppervp locked and clear
UN_ULOCK flag.  To do this, when UN_KLOCK is set, (1) union_unlock
clears UN_ULOCK and does not clear UN_KLOCK, (2) union_lock() does not
access uppervp and does not clear UN_KLOCK, and (3) callers of
vput/VOP_UNLOCK should clear UN_KLOCK.  For example, vput becomes:

	SETKLOCK(union_node);
	vput(vnode);
	CLEARKLOCK(union_node);

where SETKLOCK macro sets UN_KLOCK and CLEARKLOCK macro clears
UN_KLOCK.
1997-04-29 02:06:07 +00:00
..
union_subr.c Do not set the uppervp to NULLVP in union_removed_upper. If lowervp 1997-04-16 16:24:24 +00:00
union_vfsops.c Avoid `lock against myself' panic by following operation: 1997-04-19 06:04:13 +00:00
union_vnops.c Revised fix for locking violation when unionfs calls vput with 1997-04-29 02:06:07 +00:00
union.h Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00