linux-stable/fs/overlayfs
Miklos Szeredi 332f606b32 ovl: enable RCU'd ->get_acl()
Overlayfs does not cache ACL's (to avoid double caching).  Instead it just
calls the underlying filesystem's i_op->get_acl(), which will return the
cached value, if possible.

In rcu path walk, however, get_cached_acl_rcu() is employed to get the
value from the cache, which will fail on overlayfs resulting in dropping
out of rcu walk mode.  This can result in a big performance hit in certain
situations.

Fix by calling ->get_acl() with rcu=true in case of ACL_DONT_CACHE (which
indicates pass-through)

Reported-by: garyhuang <zjh.20052005@163.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2021-08-18 22:08:24 +02:00
..
copy_up.c ovl: use kvalloc in xattr copy-up 2021-08-17 11:47:45 +02:00
dir.c ovl: fix BUG_ON() in may_delete() when called from ovl_cleanup() 2021-08-17 17:37:53 +02:00
export.c ovl: fix uninitialized pointer read in ovl_lookup_real_one() 2021-08-10 10:21:30 +02:00
file.c ovl: fix deadlock in splice write 2021-08-10 10:21:30 +02:00
inode.c ovl: enable RCU'd ->get_acl() 2021-08-18 22:08:24 +02:00
Kconfig docs: fix broken references to text files 2020-04-20 15:35:59 -06:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
namei.c ovl: relax lookup error on mismatch origin ftype 2021-08-17 11:47:44 +02:00
overlayfs.h vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
ovl_entry.h ovl: implement volatile-specific fsync error behaviour 2021-01-28 10:22:48 +01:00
readdir.c ovl: skip stale entries in merge dir cache iteration 2021-08-10 10:21:30 +02:00
super.c ovl: add ovl_allow_offline_changes() helper 2021-08-17 11:47:44 +02:00
util.c ovl: consistent behavior for immutable/append-only inodes 2021-08-17 11:47:43 +02:00