kernel_samsung_a53x/fs/notify
Amir Goldstein 887fdf24d2 fsnotify: clear PARENT_WATCHED flags lazily
[ Upstream commit 172e422ffea20a89bfdc672741c1aad6fbb5044e ]

In some setups directories can have many (usually negative) dentries.
Hence __fsnotify_update_child_dentry_flags() function can take a
significant amount of time. Since the bulk of this function happens
under inode->i_lock this causes a significant contention on the lock
when we remove the watch from the directory as the
__fsnotify_update_child_dentry_flags() call from fsnotify_recalc_mask()
races with __fsnotify_update_child_dentry_flags() calls from
__fsnotify_parent() happening on children. This can lead upto softlockup
reports reported by users.

Fix the problem by calling fsnotify_update_children_dentry_flags() to
set PARENT_WATCHED flags only when parent starts watching children.

When parent stops watching children, clear false positive PARENT_WATCHED
flags lazily in __fsnotify_parent() for each accessed child.

Suggested-by: Jan Kara <jack@suse.cz>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-23 23:20:58 +01:00
..
dnotify dnotify: use fsnotify group lock helpers 2024-11-19 12:27:55 +01:00
fanotify Revert "fs: add file and path permissions helpers" 2024-11-19 13:30:21 +01:00
inotify Revert "fs: add file and path permissions helpers" 2024-11-19 13:30:21 +01:00
fdinfo.c fanotify: prepare for setting event flags in ignore mask 2024-11-19 12:27:59 +01:00
fdinfo.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fsnotify.c fsnotify: clear PARENT_WATCHED flags lazily 2024-11-23 23:20:58 +01:00
fsnotify.h fsnotify: clear PARENT_WATCHED flags lazily 2024-11-23 23:20:58 +01:00
group.c fsnotify: create helpers for group mark_mutex lock 2024-11-19 12:27:55 +01:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mark.c fsnotify: clear PARENT_WATCHED flags lazily 2024-11-23 23:20:58 +01:00
notification.c fsnotify: Pass group argument to free_event 2024-11-19 12:27:46 +01:00