when merging status info that has an errorCode of EACCESS set,
merge the garbage we received.
When checking the access to the object return EACCESS if the
stat cache object has the EACCESS flag set. This will be cleared
the next time a BulkStatus succeeds.
(cherry picked from commit
e9fb99c770101de103df0a2ff7ba364159b81f80)
cm_fid_t tfid;
int didLock;
long trights;
-
+
+ if (scp->flags & CM_SCACHEFLAG_EACCESS) {
+ *outRightsp = aclScp->anyAccess;
+ return CM_ERROR_NOACCESS;
+ }
+
didLock = 0;
if (scp->fileType == CM_SCACHETYPE_DIRECTORY) {
aclScp = scp;
if (statusp->errorCode != 0) {
scp->flags |= CM_SCACHEFLAG_EACCESS;
osi_Log2(afsd_logp, "Merge, Failure scp %x code 0x%x", scp, statusp->errorCode);
- return;
} else {
scp->flags &= ~CM_SCACHEFLAG_EACCESS;
}