With the global vnode cache there is no longer a need for vget() (take the first reference on a vnode) to reside in global namespace. 1) Rename vget() to vcache_vget() and vcache_tryvget() respectively and move the definitions to sys/vnode_impl.h. 2) Vget() increments the v_usecount before it checks the vnode is stable. This behaviour makes it impossible to assert v_usecount being zero or one as v_usecount also reflects other threads trying to vget(). Change vcache_vget() to increment v_holdcnt to prevent the vnode from disappearing while vcache_vget() waits for a stable state and free the vnode if this hold was the last reference to a reclaimed vnode. 3) Add some "v_usecount == 1" assertions. Diffs are here: https://www.netbsd.org/~hannken/vget/
Comments or objections anyone? -- J. Hannken-Illjes - hann...@eis.cs.tu-bs.de - TU Braunschweig (Germany)