libafs: Use vcount, not maxvcount to trim vcaches

Every five minutes we afs_ShakeLooseVCaches to try and return the
number of vcaches in use down to the originally configured -stat level
(when we are using dynamic vcaches). We should calculate how many
vcaches to flush based on the number of currently active vcaches
(afs_vcount), not the peak number (afs_maxvcount). Otherwise, once we
exceed the configured -stat level, we will always keep trying to flush
numerous vcaches, even if we barely have any vcaches in use.

Reviewed-on: http://gerrit.openafs.org/4584
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 2a2206bfe1)

Change-Id: Ia8074673ac8c07770bb90016502a9ea860445660
Reviewed-on: http://gerrit.openafs.org/4621
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
Andrew Deason 2011-04-28 11:48:18 -05:00 committed by Derrick Brashear
parent 1d147597b9
commit 3cd983f62d

View File

@ -201,10 +201,10 @@ afs_Daemon(void)
if (afsd_dynamic_vcaches && (last5MinCheck + 300 < now)) {
/* start with trying to drop us back to our base usage */
int anumber;
if (afs_maxvcount <= afs_cacheStats)
anumber = VCACHE_FREE;
if (afs_vcount <= afs_cacheStats)
anumber = VCACHE_FREE;
else
anumber = VCACHE_FREE + (afs_maxvcount - afs_cacheStats);
anumber = VCACHE_FREE + (afs_vcount - afs_cacheStats);
ObtainWriteLock(&afs_xvcache, 734);
afs_ShakeLooseVCaches(anumber);