On Tue Aug 17 2010 at 16:26:10 +0200, Juergen Hannken-Illjes wrote: > > > > It's not obvious from your commit message what prevents it from gaining > > > > a reference after the lock is dropped. > > > > > > The interlock is taken before the freelist lock is dropped and vnodes on > > > the free lists should never appear on other lists. > > > > Not even the name cache? > > > > (I can't remember off the top of my head, but IIRC there's something > > sneaky about it) > > Name cache does vtryget() then vget(). As the usecount is zero, vtryget() > fails and vget() gets called with the interlock held and needs the freelist > lock to proceed. > > I still don't see a race here.
Ok, it wasn't clear what you meant by "other lists". Your commit message makes sense now.