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