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
2a2206bfe16815a6625fee4d37520e9676d88ab4)
Change-Id: I80cfbf31ba81d7cf23013c0efcea0b8ac8c341db
Reviewed-on: http://gerrit.openafs.org/4602
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
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)
+ 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);