*/
if (tdc) {
ReleaseReadLock(&tdc->lock);
-#ifndef AFS_VM_RDWR_ENV
+#if !defined(AFS_VM_RDWR_ENV) || defined(AFS_LINUX22_ENV)
/* try to queue prefetch, if needed */
if (!noLock) {
afs_PrefetchChunk(avc, tdc, acred, &treq);
if (!noLock) {
ReleaseReadLock(&avc->lock);
-#ifndef AFS_VM_RDWR_ENV
+#if !defined(AFS_VM_RDWR_ENV) || defined(AFS_LINUX22_ENV)
if (!(code = afs_InitReq(&treq, acred))) {
if (!(tdc->mflags & DFNextStarted))
afs_PrefetchChunk(avc, tdc, acred, &treq);
*/
if (tdc) {
ReleaseReadLock(&tdc->lock);
-#ifndef AFS_VM_RDWR_ENV
+#if !defined(AFS_VM_RDWR_ENV) || defined(AFS_LINUX22_ENV)
/* try to queue prefetch, if needed */
if (!noLock) {
if (!(tdc->mflags & DFNextStarted))
avc->m.Length = filePos;
}
#endif
-#ifndef AFS_VM_RDWR_ENV
+ ReleaseWriteLock(&tdc->lock);
+ afs_PutDCache(tdc);
+#if !defined(AFS_VM_RDWR_ENV) || defined(AFS_LINUX22_ENV)
/*
* If write is implemented via VM, afs_DoPartialWrite() is called from
* the high-level write op.
code = afs_DoPartialWrite(avc, &treq);
if (code) {
error = code;
- ReleaseWriteLock(&tdc->lock);
- afs_PutDCache(tdc);
break;
}
}
#endif
- ReleaseWriteLock(&tdc->lock);
- afs_PutDCache(tdc);
}
#ifndef AFS_VM_RDWR_ENV
afs_FakeClose(avc, acred);
}
#endif
osi_UFSClose(tfile);
-#ifndef AFS_VM_RDWR_ENV
+ ReleaseWriteLock(&tdc->lock);
+ afs_PutDCache(tdc);
+#if !defined(AFS_VM_RDWR_ENV) || defined(AFS_LINUX22_ENV)
/*
* If write is implemented via VM, afs_DoPartialWrite() is called from
* the high-level write op.
code = afs_DoPartialWrite(avc, &treq);
if (code) {
error = code;
- ReleaseWriteLock(&tdc->lock);
- afs_PutDCache(tdc);
break;
}
}
#endif
- ReleaseWriteLock(&tdc->lock);
- afs_PutDCache(tdc);
}
#ifndef AFS_VM_RDWR_ENV
afs_FakeClose(avc, acred);