}
lock_ReleaseWrite(&cm_aclLock);
}
+
+/*
+ * Invalidate ACL info for a user that has just obtained or lost tokens.
+ */
+void
+cm_ResetACLCache(cm_user_t *userp)
+{
+ cm_scache_t *scp;
+ int hash;
+
+ lock_ObtainWrite(&cm_scacheLock);
+ for (hash=0; hash < cm_data.scacheHashTableSize; hash++) {
+ for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
+ cm_HoldSCacheNoLock(scp);
+ lock_ReleaseWrite(&cm_scacheLock);
+ lock_ObtainWrite(&scp->rw);
+ cm_InvalidateACLUser(scp, userp);
+ lock_ReleaseWrite(&scp->rw);
+ lock_ObtainWrite(&cm_scacheLock);
+ cm_ReleaseSCacheNoLock(scp);
+ }
+ }
+ lock_ReleaseWrite(&cm_scacheLock);
+}
+
+
extern long cm_ShutdownACLCache(void);
+extern void cm_ResetACLCache(cm_user_t *userp);
+
#endif /* _CM_ACLENT_H_ */
}
/*
- * Utility function. Used within this file.
- * Invalidate ACL info for a user that has just obtained or lost tokens.
- */
-void
-cm_ResetACLCache(cm_user_t *userp)
-{
- cm_scache_t *scp;
- int hash;
-
- lock_ObtainWrite(&cm_scacheLock);
- for (hash=0; hash < cm_data.scacheHashTableSize; hash++) {
- for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
- cm_HoldSCacheNoLock(scp);
- lock_ReleaseWrite(&cm_scacheLock);
- lock_ObtainWrite(&scp->rw);
- cm_InvalidateACLUser(scp, userp);
- lock_ReleaseWrite(&scp->rw);
- lock_ObtainWrite(&cm_scacheLock);
- cm_ReleaseSCacheNoLock(scp);
- }
- }
- lock_ReleaseWrite(&cm_scacheLock);
-}
-
-/*
* TranslateExtendedChars - This is a fix for TR 54482.
*
* If an extended character (80 - FF) is entered into a file
extern void cm_InitIoctl(void);
-extern void cm_ResetACLCache(cm_user_t *userp);
-
extern cm_ioctlQueryOptions_t *
cm_IoctlGetQueryOptions(struct cm_ioctl *ioctlp, struct cm_user *userp);