diff options
Diffstat (limited to 'fs/drop_caches.c')
-rw-r--r-- | fs/drop_caches.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/drop_caches.c b/fs/drop_caches.c index 6c6f73ba0868..98b77c89494c 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/writeback.h> | 8 | #include <linux/writeback.h> |
9 | #include <linux/sysctl.h> | 9 | #include <linux/sysctl.h> |
10 | #include <linux/gfp.h> | 10 | #include <linux/gfp.h> |
11 | #include "internal.h" | ||
11 | 12 | ||
12 | /* A global variable is a bit ugly, but it keeps the code simple */ | 13 | /* A global variable is a bit ugly, but it keeps the code simple */ |
13 | int sysctl_drop_caches; | 14 | int sysctl_drop_caches; |
@@ -16,7 +17,7 @@ static void drop_pagecache_sb(struct super_block *sb, void *unused) | |||
16 | { | 17 | { |
17 | struct inode *inode, *toput_inode = NULL; | 18 | struct inode *inode, *toput_inode = NULL; |
18 | 19 | ||
19 | spin_lock(&inode_lock); | 20 | spin_lock(&inode_sb_list_lock); |
20 | list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { | 21 | list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { |
21 | spin_lock(&inode->i_lock); | 22 | spin_lock(&inode->i_lock); |
22 | if ((inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) || | 23 | if ((inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) || |
@@ -26,13 +27,13 @@ static void drop_pagecache_sb(struct super_block *sb, void *unused) | |||
26 | } | 27 | } |
27 | __iget(inode); | 28 | __iget(inode); |
28 | spin_unlock(&inode->i_lock); | 29 | spin_unlock(&inode->i_lock); |
29 | spin_unlock(&inode_lock); | 30 | spin_unlock(&inode_sb_list_lock); |
30 | invalidate_mapping_pages(inode->i_mapping, 0, -1); | 31 | invalidate_mapping_pages(inode->i_mapping, 0, -1); |
31 | iput(toput_inode); | 32 | iput(toput_inode); |
32 | toput_inode = inode; | 33 | toput_inode = inode; |
33 | spin_lock(&inode_lock); | 34 | spin_lock(&inode_sb_list_lock); |
34 | } | 35 | } |
35 | spin_unlock(&inode_lock); | 36 | spin_unlock(&inode_sb_list_lock); |
36 | iput(toput_inode); | 37 | iput(toput_inode); |
37 | } | 38 | } |
38 | 39 | ||