goto done2;
afs_InitFakeStat(&fakestate);
+
+ AFS_DISCON_LOCK();
+
code = afs_EvalFakeStat(&adp, &fakestate, &treq);
if (code)
goto done;
goto done;
}
+ if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) {
+ code = ENETDOWN;
+ goto done;
+ }
+
InStatus.Mask = AFS_SETMODTIME | AFS_SETMODE;
InStatus.ClientModTime = osi_Time();
alen = strlen(atargetName); /* we want it to include the null */
afs_PutFakeStat(&fakestate);
if (volp)
afs_PutVolume(volp, READ_LOCK);
+ AFS_DISCON_UNLOCK();
code = afs_CheckCode(code, &treq, 31);
done2:
return code;
ICL_TYPE_POINTER, tdc, ICL_TYPE_OFFSET,
ICL_HANDLE_OFFSET(avc->m.Length));
if (!tdc) {
- return EIO;
+ if (AFS_IS_DISCONNECTED)
+ return ENETDOWN;
+ else
+ return EIO;
}
/* otherwise we have the data loaded, go for it */
if (len > 1024) {
if ((code = afs_InitReq(&treq, acred)))
return code;
afs_InitFakeStat(&fakestat);
+
+ AFS_DISCON_LOCK();
+
code = afs_EvalFakeStat(&avc, &fakestat, &treq);
if (code)
goto done;
ReleaseWriteLock(&avc->lock);
done:
afs_PutFakeStat(&fakestat);
+ AFS_DISCON_UNLOCK();
code = afs_CheckCode(code, &treq, 32);
return code;
}