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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to