Subject: CVS commit: src/sys
To: None <source-changes@NetBSD.org>
From: Antti Kantee <pooka@netbsd.org>
List: source-changes
Date: 07/29/2007 12:40:37
Module Name: src
Committed By: pooka
Date: Sun Jul 29 12:40:37 UTC 2007
Modified Files:
src/sys/kern: kern_lock.c vfs_subr.c
src/sys/sys: lock.h
Log Message:
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.117 -r1.118 src/sys/kern/kern_lock.c
cvs rdiff -r1.294 -r1.295 src/sys/kern/vfs_subr.c
cvs rdiff -r1.71 -r1.72 src/sys/sys/lock.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.