On Thu, Apr 6, 2017 at 6:25 PM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > I am thinking linked list of redirect_fh stored in upper inodes (of copy up > hardlinks and redirected dirs). Loading the list at mount is just > traversing the list > and chaining all inodes in memory. > upper remove may need to update one (prev) inode and copy up (or redirect) > may need to update one (tail) inode. I think you didn't take into account copied up and renamed non-directories. Those don't have redirect, yet need to find by lower inode. I have related idea: When renaming a lower/merged directory or lower non-directory, always add back-redirect pointer to moved object pointing to original location, as well as forward-redirect to whiteout at original location pointing to new location. Possibly could do both with file handle. Whenever either is moved/created/removed pointers need to be updated. Hard linking a copied up file would result in duplication of the forward pointers. Solves the nfs export case, since we can always find new location of objects based on location on lower layer. Still doesn't solve the hard link copy-up, but now only a list of partially copied up hard links is needed, which should be short (unless someone is deliberately trying to mess with this, in which case we really don't care about performance). Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html