Subject: CVS commit: [netbsd-2] src/sys
To: None <source-changes@NetBSD.org>
From: Manuel Bouyer <bouyer@netbsd.org>
List: source-changes
Date: 08/11/2007 14:03:48
Module Name:	src
Committed By:	bouyer
Date:		Sat Aug 11 14:03:48 UTC 2007

Modified Files:
	src/sys/kern [netbsd-2]: kern_lock.c vfs_subr.c
	src/sys/sys [netbsd-2]: lock.h

Log Message:
Pull up following revision(s) (requested by pooka in ticket #11349):
	sys/sys/lock.h: revision 1.72
	sys/kern/kern_lock.c: revision 1.118 via patch
	sys/kern/vfs_subr.c: revision 1.295
Define a new lockmgr flag LK_RESURRECT which can be used in
conjunction with LK_DRAIN.  This has the same effect as LK_DRAIN
except it atomically does NOT mark the lock as drained.  This
guarantees that when we got the lock, we were the last one currently
waiting for the lock.
Use LK_DRAIN|LK_RESURRECT in vclean() to make sure there are no
waiters for the lock.  This should fix behaviour theoretized to be
caused by vfs_subr.c 1.289 which caused vclean() to run into
completion and free the vnode before all lock-waiters had been
processed.  Should therefore fix the "simple_lock: unitialized lock"
problems seen recently.
thanks to Juergen Hannken-Illjes for some analysis of the problem
and Erik Bertelsen for testing


To generate a diff of this commit:
cvs rdiff -r1.75.2.1 -r1.75.2.1.2.1 src/sys/kern/kern_lock.c
cvs rdiff -r1.218.2.4.2.2 -r1.218.2.4.2.3 src/sys/kern/vfs_subr.c
cvs rdiff -r1.52.2.1 -r1.52.2.1.2.1 src/sys/sys/lock.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.