> > Unfortunately, the version of the patch that I sent out isn't going to
> > help your problem. It needs to yield at the top of the loop, but vp isn't
> > necessarily valid after the wakeup from the msleep. That's a problem that
> > I'm having trouble figuring out a solution to - the solutions that come
> > to mind will all significantly increase the overhead of the loop.
> I apologize for not reading the code as I am swamped, but a technique
> that Matt Dillon used for bufs might work here.
> Can you use a placeholder vnode as a place to restart the scan?
> you might have to mark it special so that other threads/things
> (getnewvnode()?) don't molest it, but it can provide for a convenient
> restart point.
That was one of the solutions that I considered and rejected since it
would significantly increase the overhead of the loop.
The solution provided by Kostik Belousov that uses uio_yield looks like
a find solution. I intend to try it out on some servers RSN.
David G. Lawrence
Download Technologies, Inc. - http://www.downloadtech.com - (866) 399 8500
The FreeBSD Project - http://www.freebsd.org
Pave the road of life with opportunities.