On Mon, Jan 10, 2011 at 07:45:23PM +0000, David Laight wrote: > > As far as I can tell it only uses the usecount to decide whether the > > vnode is still active or not, so adding 1 temporarily should be > > sufficient if the goal is to have it not disappear. > > > > OTOH, it seems to me that it *should* disappear in that case, and also > > that vrevoke() should also end up getting called on the layer vnode. > > What about other references to the 'lower' vnode? > If the revoke of the lower vnode is done one for each reference of > the layer vnode - then you need to add 'n - 1' to the ref count > of the lower vnode, not set it to 'n'.
It's not; as I understand so far, revoke is done once, and while the behavior depends on whether other references besides the caller's exist, it doesn't appear to care how many. But I don't really understand the way vrevoke and vclean and whatnot fit together yet. -- David A. Holland dholl...@netbsd.org