From: Chaskiel M Grundman Date: Wed, 25 Mar 2009 19:34:59 +0000 (+0000) Subject: STABLE14-cbr-free-what-you-alloc-20090325 X-Git-Tag: openafs-stable-1_4_9pre2~1 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=4ca1bd85c73eaac505984cc5e8aa94f89ae09b33;p=packages%2Fo%2Fopenafs.git STABLE14-cbr-free-what-you-alloc-20090325 LICENSE IPL10 FIXES 124531 dequeue and free items as alloc'd (cherry picked from commit 80494f5096d231e1e032229732f2d94ba569718e) --- diff --git a/src/afs/afs_vcache.c b/src/afs/afs_vcache.c index 4a214e4ea..dbf49fae4 100644 --- a/src/afs/afs_vcache.c +++ b/src/afs/afs_vcache.c @@ -315,6 +315,8 @@ afs_InactiveVCache(struct vcache *avc, struct AFS_UCRED *acred) * held, so we don't have to worry about blocking in osi_Alloc. */ static struct afs_cbr *afs_cbrSpace = 0; +/* if alloc limit below changes, fix me! */ +static struct afs_cbr *afs_cbrHeads[2]; struct afs_cbr * afs_AllocCBR(void) { @@ -336,6 +338,7 @@ afs_AllocCBR(void) } tsp[AFS_NCBRS - 1].next = 0; afs_cbrSpace = tsp; + afs_cbrHeads[afs_stats_cmperf.CallBackAlloced] = tsp; afs_stats_cmperf.CallBackAlloced++; } } @@ -3136,8 +3139,9 @@ shutdown_vcache(void) /* * Free any leftover callback queue */ - for (tsp = afs_cbrSpace; tsp; tsp = nsp) { - nsp = tsp->next; + for (i = 0; i < afs_stats_cmperf.CallBackAlloced; i++) { + tsp = afs_cbrHeads[i]; + afs_cbrHeads[i] = 0; afs_osi_Free((char *)tsp, AFS_NCBRS * sizeof(struct afs_cbr)); } afs_cbrSpace = 0;