#endif /* AFS_FREELANCE_CLIENT */
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;
}
if (!(flags & CM_MERGEFLAG_FORCE)
#define CM_SCACHEFLAG_ANYWATCH \
(CM_SCACHEFLAG_WATCHED | CM_SCACHEFLAG_WATCHEDSUBTREE)
-#define CM_SCACHEFLAG_NO64BITOPS 0x200000 /* only supports
- 32-bit fetch/store
- operations */
+#define CM_SCACHEFLAG_EACCESS 0x200000 /* Bulk Stat returned EACCES */
/* sync flags for calls to the server. The CM_SCACHEFLAG_FETCHING,
* CM_SCACHEFLAG_STORING and CM_SCACHEFLAG_SIZESTORING flags correspond to the
if (tscp) {
if (lock_TryMutex(&tscp->mx)) {
/* we have an entry that we can look at */
- if (cm_HaveCallback(tscp)) {
+ if (!(tscp->flags & CM_SCACHEFLAG_EACCESS) && cm_HaveCallback(tscp)) {
/* we have a callback on it. Don't bother
* fetching this stat entry, since we're happy
* with the info we have.
* Right now, be pretty conservative: if there's a
* callback or a pending call, skip it.
*/
- if (scp->cbServerp == NULL
+ if ((scp->cbServerp == NULL || (scp->flags & CM_SCACHEFLAG_EACCESS))
&& !(scp->flags &
(CM_SCACHEFLAG_FETCHING
| CM_SCACHEFLAG_STORING