Re: [patch 37/52] fs: icache lazy lru

Nick Piggin
2010-07-01T07:57:35Z

On Thu, Jul 01, 2010 at 12:46:33PM +1000, Dave Chinner wrote:
> On Wed, Jun 30, 2010 at 10:06:31PM +1000, Nick Piggin wrote:
> > On Wed, Jun 30, 2010 at 06:38:14PM +1000, Dave Chinner wrote:
> > > On Thu, Jun 24, 2010 at 01:02:49PM +1000, npiggin@suse.de wrote:
> > > > Impelemnt lazy inode lru similarly to dcache. This will reduce lock
> > > > acquisition and will help to improve lock ordering subsequently.
> > >
> > > I'm not sure we want the I_REFERENCED reclaim free pass for a clean
> > > inode that has been put on the LRU directly. I can see exactly how
> > > it is benficial to delay reclaim of dirty inodes (XFS uses that
> > > trick), but in terms of aging the cache we've already done this
> > > free pass trick at the dentry level. Hence I think the frequent
> > > separate access patterns tend to be filtered out at the dcache level
> > > and hence we don't need to handle that in the inode cache.
> > >
> > > Perhaps we only need the I_REFERENCED flag to give dirty inodes a
> > > chance to be flushed by other means before forcing reclaim to do
> > > inode writeback?
> >
> > It doesn't force flush, but it force invalidates pagecache.
>
> Sorry, bad choice of words - I should have said "forcing reclaim to
> wait on inode writeback". That is what will happen in the case of
> delayed allocation - the page cache will be clean, but the inode
> can be dirty, so reclaiming such an inode would cause the shrinker
> to block in clear_inode() waiting for inode writeback to
> complete.

OK.

> However, that is mostly irrelevant - you haven't comented at all on
> whether the I_REFERENCED flag is too broad or even needed which is
> what really needs to be discussed about this patch....

Well when moving from non-lazy to lazy, I think I_REFERENCED makes
sense, and matched what dcache did when it went to lazy LRU.
Otherwise inodes on the LRU list stay basically in the order that
they were added to the list, and have no relation to when they
were last used, I don't think that's a good idea.