libafs: Use vcount, not maxvcount to trim vcaches
authorAndrew Deason <adeason@sinenomine.net>
Thu, 28 Apr 2011 16:48:18 +0000 (11:48 -0500)
committerDerrick Brashear <shadow@dementia.org>
Fri, 29 Apr 2011 03:27:58 +0000 (20:27 -0700)
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.

Change-Id: I875fc1d33c817dde2230946b852bb74f8ffd84c2
Reviewed-on: http://gerrit.openafs.org/4584
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/afs/afs_daemons.c

index 8938ea8..e6d2590 100644 (file)
@@ -236,10 +236,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)
+            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);