Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/kern
Juergen Hannken-Illjes <hannken%eis.cs.tu-bs.de@localhost> 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.
It would be quite cool to expand the comment in the top of vfs_subr.c, with
sections like "Vnode reclamation mechanism", "Vnode life-cycle", etc and
thus document our knowledge. Now, each time we re-read and re-discover the
logic and potential corner cases. And, I believe, not all corner cases.
Just thinking out load. :)
--
Mindaugas
Home |
Main Index |
Thread Index |
Old Index