Hi, This is V14 of overlayfs metadata only copy-up feature. These patches I have rebased on top of Miklos overlayfs-next tree's branch overlayfs-rorw. git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git overlayfs-rorw Patches are also available here. https://github.com/rhvgoyal/linux/commits/metacopy-v14 I think it made sense to rebase these patches on top of stacking file operations. i know Miklos is making some changes to the patches. I will rebase again once Miklos publishes his changes. I have run unionmount-testsuite and "./check -overlay -g quick" and that works. Only 4 overlay tests fail, which fail on vanilla kernel too. Changes from V13. - Rebased on top of overlayfs-rorw branch and made changes to deal with stacking file operations. - Primarily took care of Amir's comments from V13. - Dropped support for removing REDIRCT when metacopy file is data copied up. - Dropped all the extra inode locking around redirects. I don't think any extra locking is required as of now. Put a rationale for my thinking in commit message of patch with following subject. "ovl: Set redirect on upper inode when it is linked" - Finally did not move setting redirect before lock_rename(), as there did not seem to be a need for extra locking so no issues with lock ordering, hence no need to move setting redirect before lock_rename. Any feedback is welcome. Overview -------- Metadata only copy up allows for copying up of only metadata and data is copied up later when file is opened for WRITE operation. This seems to have couple of use cases. - Provide reflink like functionality for overlay filesystem. - Make full container image chown operations faster. I am especially interested in second use case at this point of time where I want to chown container images fast and shift them for the user namespace container is going to run in. Thanks Vivek Vivek Goyal (31): ovl: Initialize ovl_inode->redirect in ovl_get_inode() ovl: Move the copy up helpers to copy_up.c ovl: Provide a mount option metacopy=on/off for metadata copyup ovl: During copy up, first copy up metadata and then data ovl: Copy up only metadata during copy up where it makes sense ovl: Add helper ovl_already_copied_up() ovl: A new xattr OVL_XATTR_METACOPY for file on upper ovl: Use out_err instead of out_nomem ovl: Modify ovl_lookup() and friends to lookup metacopy dentry ovl: Copy up meta inode data from lowest data inode ovl: Add helper ovl_dentry_lowerdata() to get lower data dentry ovl: Add an helper to get real data dentry ovl: Fix ovl_getattr() to get number of blocks from lower ovl: Store lower data inode in ovl_inode ovl: Add helper ovl_inode_real_data() ovl: Always open file/inode which contains data and not metacopy ovl: Do not expose metacopy only dentry from d_real() ovl: Move some dir related ovl_lookup_single() code in else block ovl: Check redirects for metacopy files ovl: Treat metacopy dentries as type OVL_PATH_MERGE ovl: Add an inode flag OVL_CONST_INO ovl: Do not set dentry type ORIGIN for broken hardlinks ovl: Set redirect on metacopy files upon rename ovl: Set redirect on upper inode when it is linked ovl: Check redirect on index as well ovl: Allow ovl_open_realfile() to open metacopy inode ovl: Issue fsync on upper metacopy inode as well ovl: Disbale metacopy for MAP_SHARED mmap() ovl: Do not do metadata only copy-up for truncate operation ovl: Do not do metacopy only for ioctl modifying file attr ovl: Enable metadata only feature Documentation/filesystems/overlayfs.txt | 30 +++- fs/overlayfs/Kconfig | 19 +++ fs/overlayfs/copy_up.c | 156 +++++++++++++++----- fs/overlayfs/dir.c | 74 +++++++--- fs/overlayfs/export.c | 6 +- fs/overlayfs/file.c | 65 +++++++-- fs/overlayfs/inode.c | 113 +++++++++------ fs/overlayfs/namei.c | 144 ++++++++++++++----- fs/overlayfs/overlayfs.h | 34 ++++- fs/overlayfs/ovl_entry.h | 2 + fs/overlayfs/super.c | 53 ++++++- fs/overlayfs/util.c | 246 +++++++++++++++++++++++++++++++- 12 files changed, 782 insertions(+), 160 deletions(-) -- 2.13.6 -- 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