vfs: fix spinning prevention in prune_icache_sb
authorChristoph Hellwig <hch@lst.de>
Fri, 28 Oct 2011 08:03:41 +0000 (10:03 +0200)
committerroot <root@serles.lst.de>
Fri, 28 Oct 2011 12:58:55 +0000 (14:58 +0200)
We need to move the inode to the end of the list to actually make the
spinning prevention explained in the comment above it work.  With a
plain list_move it will simply stay in place as we're always reclaiming
from the head of the list.

Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/inode.c

index ec7924696a139870c70a0971c8d2d1483a747ade..ecbb68dc7e2aef9bbf52d0b94c0dd401a7d50bae 100644 (file)
@@ -634,7 +634,7 @@ void prune_icache_sb(struct super_block *sb, int nr_to_scan)
                 * inode to the back of the list so we don't spin on it.
                 */
                if (!spin_trylock(&inode->i_lock)) {
-                       list_move(&inode->i_lru, &sb->s_inode_lru);
+                       list_move_tail(&inode->i_lru, &sb->s_inode_lru);
                        continue;
                }