[EMAIL PROTECTED] wrote on 08/04/2006 08:31:37 PM:
> Charles P Wright:
> > Unionfs only gets hardlinks that were created on Unionfs right.
>
> If you use the persistent inode number feature, you can handle hardlinks
> created by branch fs, can't you?
Yes.

> > > What will happen after the cached dentry and inode are freed, by
> > > shrink_dcache() or something? Is your i_stacked_inode freed too? Is
it
> > > still available?
> > The lower-level inode can not be thrown out if there is a reference
from a
> > stacked inode, because the stacked inode takes a reference count on the
> > lower-level inode.
>
> Yes it is.
> But how about the 1-1 mapping ballance? For example, if a user does
> 'find / -ls' or something,
> - ecryptfs/wrapfs/unionfs inode cache may be discarded
> - lower_inode may be survived, remains in cache (since unionfs branch is
>   accessible by 'find')
> - lower_inode->i_stacked_inode will point illegal address
> - next time when ecryptfs/wrapfs/unionfs access the inode, something bad
>   will happen
Mike nulled out the lower_inode->i_stacked_inode when the ecryptfs inode
was
freed.

> The posted code might be just a prototype to show the concept, so
> the handlling the referrence counter of i_stacked_inode might be just
> lacked.
> But I am afraid if ecryptfs is going to handle iput/iget to
> i_stacked_inode, it may create a 'never-freed-inode' since they refers
> each other.
The lower-level inode doesn't need a reference count, because it doesn't
hold onto the upper-level inode.

Charles

_______________________________________________
unionfs mailing list
unionfs@mail.fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to