diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2010-03-22 19:36:35 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-05-21 18:31:14 -0400 |
commit | 551de6f34dfeefbeeadb32909c387d393114ecc8 (patch) | |
tree | 822af803e7e75ed476b0a176639c162e0395910d /fs/drop_caches.c | |
parent | 1712ac8fda7d8bc4dc921f5777b7423aacad7263 (diff) |
Leave superblocks on s_list until the end
We used to remove from s_list and s_instances at the same
time. So let's *not* do the former and skip superblocks
that have empty s_instances in the loops over s_list.
The next step, of course, will be to get rid of rescan logics
in those loops.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/drop_caches.c')
-rw-r--r-- | fs/drop_caches.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/drop_caches.c b/fs/drop_caches.c index 31f4b0e6d72c..9cd4e4a70f56 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c | |||
@@ -40,6 +40,8 @@ static void drop_pagecache(void) | |||
40 | spin_lock(&sb_lock); | 40 | spin_lock(&sb_lock); |
41 | restart: | 41 | restart: |
42 | list_for_each_entry(sb, &super_blocks, s_list) { | 42 | list_for_each_entry(sb, &super_blocks, s_list) { |
43 | if (list_empty(&sb->s_instances)) | ||
44 | continue; | ||
43 | sb->s_count++; | 45 | sb->s_count++; |
44 | spin_unlock(&sb_lock); | 46 | spin_unlock(&sb_lock); |
45 | down_read(&sb->s_umount); | 47 | down_read(&sb->s_umount); |