return 0;
}
+ AFS_DISCON_LOCK();
+
credp = crref();
vcp = VTOAFS(FILE_INODE(fp));
ObtainSharedLock(&vcp->lock, 535);
if ((vcp->execsOrWriters > 0) && (file_count(fp) == 1)) {
UpgradeSToWLock(&vcp->lock, 536);
- code = afs_StoreAllSegments(vcp, &treq, AFS_SYNC | AFS_LASTSTORE);
+ if (!AFS_IS_DISCONNECTED) {
+ code = afs_StoreAllSegments(vcp,
+ &treq,
+ AFS_SYNC | AFS_LASTSTORE);
+ } else {
+#if defined(AFS_DISCON_ENV)
+ if (!vcp->ddirty_flags ||
+ (vcp->ddirty_flags == VDisconShadowed)) {
+
+ ObtainWriteLock(&afs_DDirtyVCListLock, 710);
+ AFS_DISCON_ADD_DIRTY(vcp);
+ ReleaseWriteLock(&afs_DDirtyVCListLock);
+ }
+
+ /* Set disconnected write flag. */
+ vcp->ddirty_flags |= VDisconWriteOsiFlush;
+#endif
+ }
+
ConvertWToSLock(&vcp->lock);
}
code = afs_CheckCode(code, &treq, 54);
ReleaseSharedLock(&vcp->lock);
out:
+ AFS_DISCON_UNLOCK();
AFS_GUNLOCK();
crfree(credp);