kernel_optimize_test/fs/overlayfs
Miklos Szeredi df820f8de4 ovl: make private mounts longterm
Overlayfs is using clone_private_mount() to create internal mounts for
underlying layers.  These are used for operations requiring a path, such as
dentry_open().

Since these private mounts are not in any namespace they are treated as
short term, "detached" mounts and mntput() involves taking the global
mount_lock, which can result in serious cacheline pingpong.

Make these private mounts longterm instead, which trade the penalty on
mntput() for a slightly longer shutdown time due to an added RCU grace
period when putting these mounts.

Introduce a new helper kern_unmount_many() that can take care of multiple
longterm mounts with a single RCU grace period.

Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2020-06-04 10:48:19 +02:00
..
copy_up.c ovl: initialize error in ovl_copy_xattr 2020-06-04 10:48:19 +02:00
dir.c ovl: initialize OVL_UPPERDATA in ovl_lookup() 2020-06-02 22:20:25 +02:00
export.c ovl: add accessor for ofs->upper_mnt 2020-06-04 10:48:19 +02:00
file.c ovl: check permission to open real file 2020-06-03 09:45:22 +02:00
inode.c ovl: add accessor for ofs->upper_mnt 2020-06-04 10:48:19 +02:00
Kconfig ovl: fix some xino configurations 2020-03-13 15:53:06 +01:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
namei.c ovl: add accessor for ofs->upper_mnt 2020-06-04 10:48:19 +02:00
overlayfs.h ovl: fix out of bounds access warning in ovl_check_fb_len() 2020-06-02 22:20:25 +02:00
ovl_entry.h ovl: get rid of redundant members in struct ovl_fs 2020-06-04 10:48:19 +02:00
readdir.c ovl: add accessor for ofs->upper_mnt 2020-06-04 10:48:19 +02:00
super.c ovl: make private mounts longterm 2020-06-04 10:48:19 +02:00
util.c ovl: add accessor for ofs->upper_mnt 2020-06-04 10:48:19 +02:00