On Wed, Jan 08, 2014 at 10:06:31AM +0800, Li Wang wrote: > Hi, > > On 01/03/2014 07:55 AM, Andrew Morton wrote: > >On Mon, 30 Dec 2013 21:45:17 +0800 Li Wang <liwang@xxxxxxxxxxxxxxx> wrote: > > > >>Analogous to shrink_dcache_parent except that it collects inodes. > >>It is not very appropriate to be put in dcache.c, but d_walk can only > >>be invoked from here. > >However... most inodes will be on an LRU list, won't they? Doesn't > >this reuse of i_lru mean that many inodes will fail to be processed? > >If so, we might need to add a new list_head to the inode, which will be > >problematic. > > > As far as I know, fix me if i am wrong, only when inode has zero > reference count, it will be put into superblock lru list. For most > situations, there is at least a dentry refers to it, so it will not > be on any lru list. Yes, that's when they get added to the LRU, but they don't get removed if they are referenced again by a dentry. Hence dentries can be reclaimed, which puts the inode on it's LRU, but then the directory is read again and a new dentry allocated to point to it. We do not remove the inode from the LRU at this point in time. Hence you can have referenced inodes that are on the LRU, and in many workloads most of the referenced inodes in the system are on the LRU.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>