Re: CVS commit: src/sys/kern

On Thu Jan 14 2010 at 22:41:53 +0000, Manuel Bouyer wrote:
> Module Name: src
> Committed By: bouyer
> Date: Thu Jan 14 22:41:53 UTC 2010
>
> Modified Files:
> src/sys/kern: vfs_subr.c
>
> Log Message:
> Remove KASSERT(vp->v_usecount == 1) in getnewvnode() and ungetnewvnode().
> Another process could be vget()ing the vnode and bump v_usecount while
> getcleanvnode() is vclean()ing it (as vclean drops the interlock).
> vget() will then wait for VI_XLOCK or VI_FREEING to clear; and we could test
> this assertion while the other process is still slepping. We could even
> end up in ungetnewvnode() before this other process got a chance to run.
Why doesn't the v_usecount == 1 check in getcleanvnode() work?