Source-Changes-D archive

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

Re: CVS commit: src



On Mon, Jan 10, 2011 at 07:33:40PM +0000, David Holland wrote:
> On Mon, Jan 10, 2011 at 07:38:22PM +0100, Juergen Hannken-Illjes wrote:
>  > This is not a random change.  Layered file systems take exactly one
>  > reference on the lower vnode.  All references regarding layered
>  > vnodes are only taken on the layer vnode.  So we get a bootom vnode
>  > that is active (we are working on it) while it may have just one
>  > reference.  The upper (layer) vnode has the "valid" reference
>  > count.
>  > 
>  > Now when VOP_REVOKE() goes down the stack it will revoke the lowest
>  > vnode but this vnode "looks" inactive.  Adjusting the lower vnode
>  > refcount gets the (in respect to activity) right usecount on the
>  > lowest vnode while VOP_REVOKE() works on the lowest vnode.
> 
> 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'.

        David

-- 
David Laight: david%l8s.co.uk@localhost


Home | Main Index | Thread Index | Old Index