/* Now we can set the new fid. */
memcpy(&avc->fid, &newFid, sizeof(struct VenusFid));
- if (tdp) {
- /* Unset parent dir CStat flag, so it will get refreshed on next
- * online stat.
- */
- ObtainWriteLock(&tdp->lock, 745);
- tdp->states &= ~CStatd;
- ReleaseWriteLock(&tdp->lock);
- }
end:
if (tdp)
afs_PutVCache(tdp);
if (code)
printf("afs_ProcessOpRemove: server returned code=%u\n", code);
- /* Remove the statd flag from parent dir's vcache. */
- ObtainSharedLock(&afs_xvcache, 761);
- tdp = afs_FindVCache(&pdir_fid, 0, 1);
- ReleaseSharedLock(&afs_xvcache);
- if (tdp) {
- ObtainWriteLock(&tdp->lock, 746);
- tdp->states &= ~CStatd;
- ReleaseWriteLock(&tdp->lock);
- afs_PutVCache(tdp);
- }
end:
afs_osi_Free(tname, AFSNAMEMAX);
return code;
extern void afs_vcacheInit(int astatSize);
extern void shutdown_vcache(void);
extern void afs_DisconGiveUpCallbacks(void);
-
+extern void afs_ClearAllStatdFlag(void);
/* VNOPS/afs_vnop_access.c */
extern afs_int32 afs_GetAccessBits(register struct vcache *avc,
QInit(&afs_vhashTV[i]);
}
-#ifdef AFS_DISCON_ENV
void afs_DisconGiveUpCallbacks() {
int i;
struct vcache *tvc;
/*printf("gone\n");*/
}
-#endif
+/*!
+ *
+ * Clear the Statd flag from all vcaches
+ *
+ * This function removes the Statd flag from all vcaches. It's used by
+ * disconnected mode to tidy up during reconnection
+ *
+ */
+void afs_ClearAllStatdFlag() {
+ int i;
+ struct vcache *tvc;
+
+ ObtainWriteLock(&afs_xvcache, 715);
+
+ for (i = 0; i < VCSIZE; i++) {
+ for (tvc = afs_vhashT[i]; tvc; tvc = tvc->hnext) {
+ tvc->states &= ~(CStatd|CUnique);
+ }
+ }
+ ReleaseWriteLock(&afs_xvcache);
+}
+