[GIT PULL] overlayfs update for 4.15

From: Miklos Szeredi
Date: Fri Nov 17 2017 - 10:15:49 EST

Hi Linus,

Please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git overlayfs-linus

Report constant st_ino values across copy-up even if underlying layers are on
different filesystems, but using different st_dev values for each layer.
Ideally we'd report the same st_dev across the overlay, and it's possible to do
for filesystems that use only 32bits for st_ino by unifying the inum space. It
would be nice if it wasn't a choice of 32 or 64, rather filesystems could report
their current maximum (that could change on resize, so it wouldn't be set in

There are also miscellaneus fixes and a cleanup of ovl_fill_super(), that was
long overdue.

Created a path_put_init() helper that clears out the pointers after putting the
ref. I think this could be useful elsewhere, so added it to <linux/path.h>.


Amir Goldstein (6):
ovl: lockdep annotate of nested OVL_I(inode)->lock
ovl: no direct iteration for dir with origin xattr
ovl: move include of ovl_entry.h into overlayfs.h
ovl: relax same fs constraint for constant st_ino
ovl: update cache version of impure parent on rename
ovl: remove unneeded arg from ovl_verify_origin()

Chandan Rajendra (3):
ovl: re-structure overlay lower layers in-memory
ovl: allocate anonymous devs for lowerdirs
ovl: return anonymous st_dev for lower inodes

Miklos Szeredi (18):
vfs: add path_put_init()
ovl: use path_put_init() in error paths for ovl_fill_super()
ovl: split out ovl_get_upperpath() from ovl_fill_super()
ovl: split out ovl_get_workpath() from ovl_fill_super()
ovl: split out ovl_get_lowerstack() from ovl_fill_super()
ovl: split out ovl_get_upper() from ovl_fill_super()
ovl: split out ovl_get_workdir() from ovl_fill_super()
ovl: split out ovl_get_lower_layers() from ovl_fill_super()
ovl: split out ovl_get_indexdir() from ovl_fill_super()
ovl: grab reference to workbasedir early
ovl: factor out ovl_free_fs() helper
ovl: change order of setup in ovl_fill_super()
ovl: reduce the number of arguments for ovl_workdir_create()
ovl: move ovl_get_workdir() and ovl_get_lower_layers()
ovl: clean up getting upper layer
ovl: clean up workdir creation
ovl: clean up getting lower layers
ovl: rename ufs to ofs

Vivek Goyal (1):
ovl: Put upperdentry if ovl_check_origin() fails

zhangyi (F) (2):
ovl: simplify ovl_check_empty_and_clear()
ovl: fix rmdir problem on non-merge dir with origin xattr

fs/overlayfs/copy_up.c | 8 +-
fs/overlayfs/dir.c | 25 +-
fs/overlayfs/inode.c | 63 ++++-
fs/overlayfs/namei.c | 59 ++--
fs/overlayfs/overlayfs.h | 13 +-
fs/overlayfs/ovl_entry.h | 14 +-
fs/overlayfs/readdir.c | 55 +++-
fs/overlayfs/super.c | 688 ++++++++++++++++++++++++++---------------------
fs/overlayfs/util.c | 21 +-
include/linux/path.h | 6 +
10 files changed, 576 insertions(+), 376 deletions(-)