1
linux/fs/notify
Eric Sandeen 1edc8eb2e9 fs: call fsnotify_sb_delete after evict_inodes
When a filesystem is unmounted, we currently call fsnotify_sb_delete()
before evict_inodes(), which means that fsnotify_unmount_inodes()
must iterate over all inodes on the superblock looking for any inodes
with watches.  This is inefficient and can lead to livelocks as it
iterates over many unwatched inodes.

At this point, SB_ACTIVE is gone and dropping refcount to zero kicks
the inode out out immediately, so anything processed by
fsnotify_sb_delete / fsnotify_unmount_inodes gets evicted in that loop.

After that, the call to evict_inodes will evict everything else with a
zero refcount.

This should speed things up overall, and avoid livelocks in
fsnotify_unmount_inodes().

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2019-12-18 00:03:01 -05:00
..
dnotify selinux/stable-5.4 PR 20190917 2019-09-23 11:21:04 -07:00
fanotify compat_ioctl: move more drivers to compat_ptr_ioctl 2019-10-23 17:23:44 +02:00
inotify selinux/stable-5.4 PR 20190917 2019-09-23 11:21:04 -07:00
fdinfo.c fsnotify/fdinfo: exportfs_encode_inode_fh() takes pointer as 4th argument 2019-10-17 10:32:59 +02:00
fdinfo.h
fsnotify.c fs: call fsnotify_sb_delete after evict_inodes 2019-12-18 00:03:01 -05:00
fsnotify.h fsnotify: move declaration of fsnotify_mark_connector_cachep to fsnotify.h 2019-10-17 10:31:12 +02:00
group.c notify: export symbols for use by the knfsd file cache 2019-08-19 11:00:39 -04:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile
mark.c notify: export symbols for use by the knfsd file cache 2019-08-19 11:00:39 -04:00
notification.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00