Files
linux-stable-mirror/include/linux
Amir GoldsteinandGreg Kroah-Hartman d8c42405fc fsnotify: clear PARENT_WATCHED flags lazily
[ Upstream commit 172e422ffe ]

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-09-08 07:53:10 +02:00
..
2023-07-19 16:21:11 +02:00
2024-06-12 11:03:08 +02:00
2024-07-05 09:31:59 +02:00
2023-12-20 17:00:20 +01:00
2024-03-26 18:21:02 -04:00
2024-01-10 17:10:30 +01:00
2024-05-25 16:21:31 +02:00
2023-10-10 22:00:35 +02:00
2023-05-30 14:03:22 +01:00
2023-11-20 11:51:55 +01:00
2024-04-03 15:19:34 +02:00
2024-06-12 11:03:21 +02:00
2023-11-28 17:07:03 +00:00
2023-10-19 23:08:50 +02:00
2023-10-19 23:08:50 +02:00
2023-07-19 16:21:54 +02:00
2024-08-29 17:30:28 +02:00
2023-12-13 18:39:08 +01:00
2023-08-16 18:27:20 +02:00