Michael Halcrow:
> inode =3D iget(sb, wrapfs_iunique(sb, 10));
> ---
> 
> So what happens with lookup on hard links to the same lower inode?
> wrapfs_lookup() goes ahead and calls wrapfs_interpose() for the new
> dentry, which calls iget() with a uniquely generated inode number. As
> far as I can tell, we wind up with *two* stacked inodes for the lower
> inode, with two separate stacked mappings associated with one lower
> mapping. If I'm reading the code right, that's bad news.

While I know nothing about ecryptfs nor wrapfs, I guess the persistent
inode number feature in Unionfs will be the solution for you.
Additionally there is a piece of code in unionfs_interpose(), which
tries supporting hardlink (but I am afraid it may not be perfect).


> I am thinking that one answer to this issue is to add a new void
> *i_stacked_inode to the inode struct. If an existing valid lower inode
> is found on interpose, then just associate the stacked inode pointed
> to by i_stacked_inode with the stacked dentry.

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?


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

Reply via email to