Re: [CFT][PATCH] Re: Fwd: Re: memory usage - dentry_cache

Andreas Dilger
2001-04-12T17:28:17Z

David writes:
> Alexander Viro writes:
> > OK, how about wider testing? Theory: prune_dcache() goes through the
> > list of immediately killable dentries and tries to free given amount.
> > It has a "one warning" policy - it kills dentry if it sees it twice without
> > lookup finding that dentry in the interval. Unfortunately, as implemented
> > it stops when it had freed _or_ warned given amount. As the result, memory
> > pressure on dcache is less than expected.
>
> The reason the code is how it is right now is there used to be a bug
> where that goto spot would --count but not check against zero, making
> count possibly go negative and then you'd be there for a _long_ time
> :-)

Actually, this is the case if we call shrink_dcache_memory() with priority
zero. It calls prune_dcache(count = 0), which gets into the situation you
describe (i.e. negative count). I first thought this was a bug, but then
realized for priority 0 (i.e. highest priority) we want to check the whole
dentry_unused list for unreferenced dentries.

Cheers, Andreas
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert