On Wed, Jun 7, 2017 at 9:51 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > Miklos, > > This set is an independent series a top of current overlayfs-next. > I yanked all the dependencies from previous postings (consistent d_ino, > dir_lock, verify_lower) and included everything needed in this posting. > > This work introcuding the inodes index opt-in feature, which provides: > - Hardlinks are not broken on copy up > - Infrastructure for overlayfs NFS export > > Hardlink copy up tests including concurrent copy up of lower hardlinks > are available on my xfstests dev branch [1]. > > There are some more TODO items before this is ready for v4.13, but I'd > love to hear what you think about the direction this has taken so far. Do you have a public branch for this? Thanks, Miklos > > Thanks, > Amir. > > TODO: > - Consistency of lower and upper hardlinks (*) > - Cleanup stale and orphan index entries on mount (**) > - Document the inodes index feature > > (*) When any lower hardlink has been copied up, we get the indexed > upper inode on lookup of all lower hardlinks and since they all > share the same overlay inode, they have the same 'realinode'. > Opening the lower hardlinks for read gives that lower inode > and not the indexed upper 'realinode'. The tests in [1] demostrate > this problem. > (**) A stale index entry has a missing or stale 'origin' xattr. An > orphan index entry has nlink 1 and all lower hardlinks are covered. > > v2: > - Rebase on top of overalyfs-next with all dependencies > - Remove 'verify_lower' dependency and simplify > - Lookup index dentry on ovl_lookup() > - Don't hash broken overlay hardlinks by origin > - Fix nlink count of overlay inodes > - Constant st_ino for indexed hardlinks > > v1: > - Upper/work dir exclusive lock > - Introduce verify_lower mount option > - Hash overlay inodes by origin > - Introduce inodes index feature > - Copy up hardlinks using inodes index > > [1] https://github.com/amir73il/xfstests/commits/overlayfs-devel > > Amir Goldstein (20): > vfs: introduce inode 'inuse' lock > ovl: get exclusive ownership on upper/work dirs > ovl: relax same fs constrain for ovl_check_origin() > ovl: generalize ovl_create_workdir() > ovl: introduce the inodes index dir feature > ovl: verify upper root dir matches lower root dir > ovl: verify index dir matches upper dir > ovl: lookup index entry for non-dir > ovl: move inode helpers to inode.c > ovl: use ovl_inode_init() for initializing new inode > ovl: hash overlay non-dir inodes by copy up origin inode > ovl: fix nlink leak in ovl_rename() > ovl: adjust overlay inode nlink for indexed inodes > ovl: defer upper dir lock to tempfile link > ovl: factor out ovl_copy_up_inode() helper > ovl: generalize ovl_copy_up_locked() using actors > ovl: generalize ovl_copy_up_one() using actors > ovl: implement index dir copy up method > ovl: handle race of concurrent lower hardlinks copy up > ovl: constant inode number for hardlinks > > fs/inode.c | 74 ++++++ > fs/overlayfs/Kconfig | 20 ++ > fs/overlayfs/copy_up.c | 648 ++++++++++++++++++++++++++++++++++++++--------- > fs/overlayfs/dir.c | 23 +- > fs/overlayfs/inode.c | 138 +++++++++- > fs/overlayfs/namei.c | 241 +++++++++++++++--- > fs/overlayfs/overlayfs.h | 52 ++-- > fs/overlayfs/ovl_entry.h | 7 + > fs/overlayfs/super.c | 194 ++++++++++++-- > fs/overlayfs/util.c | 45 ++-- > include/linux/fs.h | 16 ++ > 11 files changed, 1235 insertions(+), 223 deletions(-) > > -- > 2.7.4 > -- 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