| From 5b55d708335a9e3e4f61f2dadf7511502205ccd1 Mon Sep 17 00:00:00 2001 |
| From: Suleiman Souhlal <suleiman@google.com> |
| Date: Sat, 13 Apr 2013 16:03:06 -0700 |
| Subject: vfs: Revert spurious fix to spinning prevention in prune_icache_sb |
| |
| From: Suleiman Souhlal <suleiman@google.com> |
| |
| commit 5b55d708335a9e3e4f61f2dadf7511502205ccd1 upstream. |
| |
| Revert commit 62a3ddef6181 ("vfs: fix spinning prevention in prune_icache_sb"). |
| |
| This commit doesn't look right: since we are looking at the tail of the |
| list (sb->s_inode_lru.prev) if we want to skip an inode, we should put |
| it back at the head of the list instead of the tail, otherwise we will |
| keep spinning on it. |
| |
| Discovered when investigating why prune_icache_sb came top in perf |
| reports of a swapping load. |
| |
| Signed-off-by: Suleiman Souhlal <suleiman@google.com> |
| Signed-off-by: Hugh Dickins <hughd@google.com> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/inode.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/inode.c |
| +++ b/fs/inode.c |
| @@ -725,7 +725,7 @@ void prune_icache_sb(struct super_block |
| * inode to the back of the list so we don't spin on it. |
| */ |
| if (!spin_trylock(&inode->i_lock)) { |
| - list_move_tail(&inode->i_lru, &sb->s_inode_lru); |
| + list_move(&inode->i_lru, &sb->s_inode_lru); |
| continue; |
| } |
| |