[git pull] vfs.git pile 3 - dcache

From: Al Viro
Date: Wed Aug 03 2022 - 14:39:35 EST


The following changes since commit b13baccc3850ca8b8cccbf8ed9912dbaa0fdf7f3:

Linux 5.19-rc2 (2022-06-12 16:11:37 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-work.dcache

for you to fetch changes up to 50417d22d0efbb1be76c3cb66b2329f83741c9c7:

fs/dcache: Move wakeup out of i_seq_dir write held region. (2022-07-30 00:38:16 -0400)

----------------------------------------------------------------
Main part here is making parallel lookups safe for RT - making
sure preemption is disabled in start_dir_add()/ end_dir_add() sections (on
non-RT it's automatic, on RT it needs to to be done explicitly) and moving
wakeups from __d_lookup_done() inside of such to the end of those sections.
Wakeups can be safely delayed for as long as ->d_lock on in-lookup
dentry is held; proving that has caught a bug in d_add_ci() that allows
memory corruption when sufficiently bogus ntfs (or case-insensitive xfs)
image is mounted. Easily fixed, fortunately.

Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>

----------------------------------------------------------------
Al Viro (1):
d_add_ci(): make sure we don't miss d_lookup_done()

Sebastian Andrzej Siewior (3):
fs/dcache: Disable preemption on i_dir_seq write side on PREEMPT_RT
fs/dcache: Move the wakeup from __d_lookup_done() to the caller.
fs/dcache: Move wakeup out of i_seq_dir write held region.

fs/dcache.c | 54 ++++++++++++++++++++++++++++++++++++++++----------
include/linux/dcache.h | 9 +++------
2 files changed, 46 insertions(+), 17 deletions(-)