aboutsummaryrefslogtreecommitdiffstats
path: root/fs/super.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-12-22 17:00:04 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2019-12-22 17:00:04 -0800
commit9efa3ed504edb1c1fc88dba96fd32168f50ab77c (patch)
treeb41b035a77e0a738a2769a72aaaf1818961b64bd /fs/super.c
parentMerge tag 'xfs-5.5-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux (diff)
parentfs: call fsnotify_sb_delete after evict_inodes (diff)
downloadlinux-dev-9efa3ed504edb1c1fc88dba96fd32168f50ab77c.tar.xz
linux-dev-9efa3ed504edb1c1fc88dba96fd32168f50ab77c.zip
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs fixes from Al Viro: "Eric's s_inodes softlockup fixes + Jan's fix for recent regression from pipe rework" * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: fs: call fsnotify_sb_delete after evict_inodes fs: avoid softlockups in s_inodes iterators pipe: Fix bogus dereference in iov_iter_alignment()
Diffstat (limited to 'fs/super.c')
-rw-r--r--fs/super.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/super.c b/fs/super.c
index cfadab2cbf35..cd352530eca9 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -448,10 +448,12 @@ void generic_shutdown_super(struct super_block *sb)
sync_filesystem(sb);
sb->s_flags &= ~SB_ACTIVE;
- fsnotify_sb_delete(sb);
cgroup_writeback_umount();
+ /* evict all inodes with zero refcount */
evict_inodes(sb);
+ /* only nonzero refcount inodes can have marks */
+ fsnotify_sb_delete(sb);
if (sb->s_dio_done_wq) {
destroy_workqueue(sb->s_dio_done_wq);