Current-Users archive

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

Re: pbulk hang in 5.99.21



Thomas Klausner <wiz%NetBSD.org@localhost> writes:

> On Wed, Nov 11, 2009 at 03:04:49PM +0900, enami tsugutomo wrote:
> > Here is a workaround I'm trying now.
> 
> Do you think bouyer's fix addresses this issue?
> 
> Module Name:  src
> Committed By: bouyer
> Date:         Sat Nov 28 10:10:18 UTC 2009
> 
> Modified Files:
>       src/sys/kern: vfs_subr.c
> 
> Log Message:
> Previous did cause a deadlock with layered FS: the vrele thread
> can sleep on the vnode lock, while vget is sleeping on the
> VI_INACTNOW flag (or the vget caller is looping on vget returning failure
> because of the VI_INACTNOW flag). With layered FSes, the upper and lower
> vnodes share the same lock, so the vget() caller above can be already
> holding the vnode lock.
> 
> Fix by dropping VI_INACTNOW before sleeping on the vnode lock in
> vrelel(), and check the ref count again once we have the lock. If the
> vnode has more than one reference, donc VOP_INACTIVE it.
> Fix PR kern/42318 and PR kern/42377
> patch tested by Hisashi T Fujinaka, Joachim K=EF=BF=BDnig, Stephen Borril=
> l and
> Matthias Scheler.

Yes, almost same effect.  Didn't work for you?

BTW, I guess the vrele thread itself has some flaw.  Probably we need
more worker thread or need a way to throttle vnode allocation (each
processes are now free to do more own work rather than waiting i/o
completion as before).

enami.



Home | Main Index | Thread Index | Old Index