}
}
-#if 0
/* also cg2v, don't dequeue the callback */
- ObtainWriteLock(&afs_xcbhash, 956);
- afs_DequeueCallback(avc);
- ReleaseWriteLock(&afs_xcbhash);
-#endif
- avc->f.states &= ~(CStatd | CDirty); /* next reference will re-stat */
+ /* next reference will re-stat */
+ afs_StaleVCacheFlags(avc, AFS_STALEVC_NOCB, CDirty);
/* now find the disk cache entries */
afs_TryToSmush(avc, acred, 1);
- osi_dnlc_purgedp(avc);
if (avc->linkData && !(avc->f.states & CCore)) {
afs_osi_Free(avc->linkData, strlen(avc->linkData) + 1);
avc->linkData = NULL;
goto done;
/* Ok, we actually do need to flush */
- ObtainWriteLock(&afs_xcbhash, 957);
- afs_DequeueCallback(avc);
- avc->f.states &= ~(CStatd | CDirty); /* next reference will re-stat cache entry */
- ReleaseWriteLock(&afs_xcbhash);
+ /* next reference will re-stat cache entry */
+ afs_StaleVCacheFlags(avc, 0, CDirty);
+
/* now find the disk cache entries */
afs_TryToSmush(avc, acred, 1);
- osi_dnlc_purgedp(avc);
if (avc->linkData && !(avc->f.states & CCore)) {
afs_osi_Free(avc->linkData, strlen(avc->linkData) + 1);
avc->linkData = NULL;
} else {
afs_warn("BYPASS: StartRXAFS_FetchData failed: %d\n", code);
unlock_and_release_pages(auio);
+ afs_PutConn(tc, rxconn, SHARED_LOCK);
goto done;
}
if (code == 0) {
if (!code)
afs_ProcessFS(avc, &tcallspec->OutStatus, areq);
- osi_Free(areq, sizeof(struct vrequest));
+ afs_DestroyReq(areq);
osi_Free(tcallspec, sizeof(struct tlocal1));
osi_Free(bparms, sizeof(struct nocache_read_request));
#ifndef UKERNEL