From d75ce9b79a3a2b0dbd5649dad7f931a8cf2107e7 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 7 Feb 2007 08:13:29 +0000 Subject: [PATCH] DEVEL15-windows-merge-eaccess-20070207 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) --- src/WINNT/afsd/cm_access.c | 7 ++++++- src/WINNT/afsd/cm_scache.c | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsd/cm_access.c b/src/WINNT/afsd/cm_access.c index 75bc0865e..c5be48717 100644 --- a/src/WINNT/afsd/cm_access.c +++ b/src/WINNT/afsd/cm_access.c @@ -42,7 +42,12 @@ int cm_HaveAccessRights(struct cm_scache *scp, struct cm_user *userp, afs_uint32 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; diff --git a/src/WINNT/afsd/cm_scache.c b/src/WINNT/afsd/cm_scache.c index c6c55973a..fc19dc671 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -1315,7 +1315,6 @@ void cm_MergeStatus(cm_scache_t *scp, AFSFetchStatus *statusp, AFSVolSync *volp, 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; } -- 2.39.5