Module Name: src Committed By: hannken Date: Sun Oct 2 13:00:07 UTC 2011
Modified Files: src/sys/kern: vfs_vnode.c Log Message: The path getnewvnode()->getcleanvnode()->vclean()->VOP_LOCK() will panic if the vnode we want to clean is a layered vnode and the caller already locked its lower vnode. Change getnewvnode() to always allocate a fresh vnode and add a helper thread (vdrain) to keep the number of allocated vnodes within desiredvnodes. Rename getcleanvnode() to cleanvnode() and let it take a vnode from the lists, clean and free it. Reviewed by: David Holland <dholl...@netbsd.org> Should fix: PR #19110 (nullfs mounts over NFS cause lock manager problems) PR #34102 (ffs panic in NetBSD 3.0_STABLE) PR #45115 (lock error panic when build.sh*3 and daily script is running) PR #45355 (Reader/writer lock error: rw_vector_enter: locking against myself) To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/kern/vfs_vnode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.