afs_uint32 rights;
afs_int32 mustFake = 0;
+ lock_ObtainWrite(&dscp->rw);
code = cm_FindACLCache(dscp, userp, &rights);
if (code == -1) {
- lock_ObtainWrite(&dscp->rw);
code = cm_SyncOp(dscp, NULL, userp, reqp, PRSFS_READ,
CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
- lock_ReleaseWrite(&dscp->rw);
if (code == CM_ERROR_NOACCESS) {
mustFake = 1;
code = 0;
}
}
+ lock_ReleaseWrite(&dscp->rw);
if (code)
goto cleanup;
afs_int32 mustFake = 0;
clientchar_t path[AFSPATHMAX];
+ lock_ObtainWrite(&dscp->rw);
code = cm_FindACLCache(dscp, userp, &rights);
if (code == -1) {
- lock_ObtainWrite(&dscp->rw);
code = cm_SyncOp(dscp, NULL, userp, reqp, PRSFS_READ,
CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
if (code == 0)
cm_SyncOpDone(dscp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
- lock_ReleaseWrite(&dscp->rw);
if (code == CM_ERROR_NOACCESS) {
mustFake = 1;
code = 0;
}
}
+ lock_ReleaseWrite(&dscp->rw);
if (code)
goto cleanup;