mirror of
https://git.openafs.org/openafs.git
synced 2025-02-01 05:57:43 +00:00
STABLE14-reclaim-defered-flush-fixes-20060128
fix side effect of reclaim lookaside (cherry picked from commit bb576b462d1d26cd07f03965c734ae6d2c5bd132)
This commit is contained in:
parent
35aaffe982
commit
c2c2b8e336
@ -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))) {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user