Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/kern



Hello Juergen,

"Juergen Hannken-Illjes" <hannken%netbsd.org@localhost> wrote:
> 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.
>
> <...>
> 
> To generate a diff of this commit:
> cvs rdiff -u -r1.11 -r1.12 src/sys/kern/vfs_vnode.c

Not that I object to the change, but such approach was already discussed in
the past on tech-kern@ and rejected.  See the follow ups of this thread:

http://mail-index.netbsd.org/tech-kern/2009/08/17/msg005861.html

This significantly changes the dynamics of vnode cache and reclamation,
apart from making it single-threaded.  Given the current locking scheme
with its issues (and thus reclamation complexity), the change is probably
good enough for the medium term.  However, in the long term, I would say
that getnewvnode() behaviour should be restored.

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index