STABLE14-reclaim-defered-flush-fixes-20060128

fix side effect of reclaim lookaside


(cherry picked from commit bb576b462d1d26cd07f03965c734ae6d2c5bd132)
This commit is contained in:
Chaskiel M Grundman 2006-01-28 18:04:04 +00:00 committed by Derrick Brashear
parent 35aaffe982
commit c2c2b8e336
3 changed files with 20 additions and 0 deletions

View File

@ -41,6 +41,8 @@ osi_VM_FlushVCache(struct vcache *avc, int *slept)
kern_return_t kret;
off_t size;
if (!vp)
return 0;
AFS_GUNLOCK();
#if 0
if (!(UBCINFOMISSING(vp) || UBCINFORECLAIMED(vp))) {

View File

@ -239,6 +239,12 @@ osi_dnlc_lookup(struct vcache *adp, char *aname, int locktype)
ReleaseReadLock(&afs_xvcache);
dnlcstats.misses++;
} else {
if (tvc->states & CVInit) {
ReleaseReadLock(&afs_xvcache);
dnlcstats.misses++;
osi_dnlc_remove(adp, aname, tvc);
return 0;
}
#ifdef AFS_OSF_ENV
VN_HOLD((vnode_t *) tvc);
#else

View File

@ -602,6 +602,18 @@ afs_FlushReclaimedVcaches(void)
tmpReclaimedVCList = tvc;
printf("Reclaim list flush %x failed: %d\n", tvc, code);
}
if (tvc->states & (CVInit
#ifdef AFS_DARWIN80_ENV
| CDeadVnode
#endif
)) {
tvc->states &= ~(CVInit
#ifdef AFS_DARWIN80_ENV
| CDeadVnode
#endif
);
afs_osi_Wakeup(&tvc->states);
}
}
if (tmpReclaimedVCList)
ReclaimedVCList = tmpReclaimedVCList;