Re: 2.6.14 kswapd eating too much CPU

From: Marcelo Tosatti
Date: Tue Dec 06 2005 - 13:13:52 EST


On Tue, Dec 06, 2005 at 01:10:06AM +0100, Jan Kasprzak wrote:
> Marcelo Tosatti wrote:
> : I wonder why prune_icache() does not move inodes with positive i_count
> : to inode_inuse list, letting iput() take care of moving to unused
> : once the count reaches zero.
> :
> : inode = list_entry(inode_unused.prev, struct inode, i_list);
> : if (inode->i_state || atomic_read(&inode->i_count)) {
> : list_move(&inode->i_list, &inode_unused);
> : continue;
> : }
> :
> : Couldnt it be
> : list_move(&inode->i_list, &inode_inuse);
> :
> : ?
>
> Hmm, this code is indeed strange. Why does it move the inode
> to the inode_unused list, when the inode has in fact been _found_ while
> scanning the inode_unused list?

It just moves to the head of the list, for later scanning.

> And how can an inode with positive ->i_count end up on the
> inode_unused list?

Such inodes only end up in the unused list during superblock
shutdown, so they should not be a problem actually (my bad).

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/