} /*SpareComp*/
-
/*
* Set the volume synchronization parameter for this volume. If it changes,
* the Cache Manager knows that the volume must be purged from the stat cache.
} /*CallPreamble*/
-static void CallPostamble(register struct rx_connection *aconn)
+static afs_int32 CallPostamble(register struct rx_connection *aconn,
+ afs_int32 ret)
{
struct host *thost;
struct client *tclient;
+ int translate = 0;
H_LOCK
tclient = h_FindClient_r(aconn);
thost = tclient->host;
+ if (thost->hostFlags & HERRORTRANS) translate = 1;
h_ReleaseClient_r(tclient);
h_Release_r(thost);
H_UNLOCK
+ return (translate ? sys_error_to_et(ret) : ret);
} /*CallPostamble*/
/*
/* Update and store volume/vnode and parent vnodes back */
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
ViceLog(2, ("SRXAFS_FetchData returns %d\n", errorCode));
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
ViceLog(2, ("SAFS_FetchACL returns %d (ACL=%s)\n",
errorCode, AccessList->AFSOpaque_val));
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
Bad_BulkStatus:
/* Update and store volume/vnode and parent vnodes back */
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
Bad_InlineBulkStatus:
/* Update and store volume/vnode and parent vnodes back */
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_FetchStatus (acall, Fid, OutStatus, CallBack, Sync);
Bad_FetchStatus:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
ViceLog(2, ("SAFS_StoreData returns %d\n", errorCode));
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
/* Update and store volume/vnode and parent vnodes back */
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
ViceLog(2, ("SAFS_StoreACL returns %d\n", errorCode));
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_StoreStatus (acall, Fid, InStatus, OutStatus, Sync);
Bad_StoreStatus:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_RemoveFile (acall, DirFid, Name, OutDirStatus, Sync);
Bad_RemoveFile:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
OutFidStatus, OutDirStatus, CallBack, Sync);
Bad_CreateFile:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
OutOldDirStatus, OutNewDirStatus, Sync);
Bad_Rename:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
OutFidStatus, OutDirStatus, Sync);
Bad_Symlink:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
OutDirStatus, Sync);
Bad_Link:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
OutFidStatus, OutDirStatus, CallBack, Sync);
Bad_MakeDir:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_RemoveDir (acall, DirFid, Name, OutDirStatus, Sync);
Bad_RemoveDir:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_SetLock (acall, Fid, type, Sync);
Bad_SetLock:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_ExtendLock (acall, Fid, Sync);
Bad_ExtendLock:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = SAFSS_ReleaseLock (acall, Fid, Sync);
Bad_ReleaseLock:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
SetSystemStats((struct AFSStatistics *)Statistics);
Bad_GetStatistics:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
*/
dataBytes = sizeof(struct afs_PerfStats);
- dataBuffP = (afs_int32 *)osi_Alloc(dataBytes);
+ dataBuffP = (afs_int32 *)malloc(dataBytes);
memcpy(dataBuffP, &afs_perfstats, dataBytes);
a_dataP->AFS_CollData_len = dataBytes>>2;
a_dataP->AFS_CollData_val = dataBuffP;
*/
dataBytes = sizeof(struct fs_stats_FullPerfStats);
- dataBuffP = (afs_int32 *)osi_Alloc(dataBytes);
+ dataBuffP = (afs_int32 *)malloc(dataBytes);
memcpy(dataBuffP, &afs_FullPerfStats, dataBytes);
a_dataP->AFS_CollData_len = dataBytes>>2;
a_dataP->AFS_CollData_val = dataBuffP;
}
Bad_GiveUpCallBacks:
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
afs_int32 *dataBuffP;
afs_int32 dataBytes;
+ dataBytes = (((CAPABILITY_BITS-1)>>5)+1) * sizeof(afs_int32);
dataBuffP = (afs_int32 *)malloc(dataBytes);
- memcpy((char *)dataBuffP, "1", dataBytes);
+ dataBytes = CAPABILITY_ERRORTRANS;
capabilities->Capabilities_len = dataBytes/sizeof(afs_int32);
capabilities->Capabilities_val = dataBuffP;
+
return 0;
}
avolinfo->Type4 = 0xabcd9999; /* tell us to try new vldb */
Bad_GetVolumeInfo:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
if (*Name == 0) {*Name = (char *) malloc(1); **Name = 0;}
if (*Motd == 0) {*Motd = (char *) malloc(1); **Motd = 0;}
if (*OfflineMsg == 0) {*OfflineMsg = (char *) malloc(1); **OfflineMsg = 0;}
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
Bad_SetVolumeStatus:
PutVolumePackage(parentwhentargetnotdir, targetptr, (Vnode *)0, volptr);
ViceLog(2,("SAFS_SetVolumeStatus returns %d\n",errorCode));
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
*VolumeName = temp; /* freed by rx server-side stub */
Bad_GetRootVolume:
- CallPostamble(tcon);
+ errorCode = CallPostamble(tcon, errorCode);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
code = FSERR_ECONNREFUSED;
Bad_CheckToken:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
ViceLog(2, ("SAFS_GetTime returns %d, %d\n", *Seconds, *USeconds));
Bad_GetTime:
- CallPostamble(tcon);
+ code = CallPostamble(tcon, code);
#if FS_STATS_DETAILED
TM_GetTimeOfDay(&opStopTime, 0);
} /*StoreData_RXStyle*/
+static int sys2et[512];
+void init_sys_error_to_et(void) {
+ int uae = 49733376L;
+ int uaf = 49733632L;
+ memset(&sys2et, 0, sizeof(sys2et));
+ sys2et[EPERM] = 1 + uae;
+ sys2et[EEXIST] = 17 + uae;
+ sys2et[ENOTEMPTY] = 39 + uae;
+}
+
+afs_int32 sys_error_to_et(afs_int32 in) {
+ if (sys2et[in] != 0) return sys2et[in];
+ return in;
+}