osi_hyper_t thyper;
AFSVolSync volSync;
AFSFid tfid;
- struct rx_call *oldCallp, *callp;
+ struct rx_call *callp;
+ struct rx_connection *rxconnp;
osi_queueData_t *qdp;
cm_buf_t *bufp;
long wbytes;
if (code)
continue;
- oldCallp = cm_GetRxConn(connp);
- callp = rx_NewCall(oldCallp);
- rx_PutConnection(oldCallp);
+ rxconnp = cm_GetRxConn(connp);
+ callp = rx_NewCall(rxconnp);
+ rx_PutConnection(rxconnp);
osi_Log3(afsd_logp, "CALL StoreData scp 0x%x, off 0x%x, size 0x%x",
(long) scp, biod.offset.LowPart, nbytes);
long code;
long truncPos;
cm_conn_t *connp;
- struct rx_call *oldCallp, *callp;
+ struct rx_call *callp;
+ struct rx_connection *rxconnp;
/* Serialize StoreData RPC's; for rationale see cm_scache.c */
(void) cm_SyncOp(scp, NULL, userp, reqp, 0,
if (code)
continue;
- oldCallp = cm_GetRxConn(connp);
- callp = rx_NewCall(oldCallp);
- rx_PutConnection(oldCallp);
+ rxconnp = cm_GetRxConn(connp);
+ callp = rx_NewCall(rxconnp);
+ rx_PutConnection(rxconnp);
code = StartRXAFS_StoreData(callp, &tfid, &inStatus,
0, 0, truncPos);
cm_buf_t *tbufp; /* buf we're filling */
osi_queueData_t *qdp; /* q element we're scanning */
AFSFid tfid;
- struct rx_call *oldCallp, *callp;
+ struct rx_call *callp;
+ struct rx_connection *rxconnp;
cm_bulkIO_t biod; /* bulk IO descriptor */
cm_conn_t *connp;
int getroot;
if (code)
continue;
- oldCallp = cm_GetRxConn(connp);
- callp = rx_NewCall(oldCallp);
- rx_PutConnection(oldCallp);
+ rxconnp = cm_GetRxConn(connp);
+ callp = rx_NewCall(rxconnp);
+ rx_PutConnection(rxconnp);
osi_Log3(afsd_logp, "CALL FetchData vp %x, off 0x%x, size 0x%x",
(long) scp, biod.offset.LowPart, biod.length);
if (cm_freelanceEnabled && special) {
osi_Log0(afsd_logp,"cm_getSCache Freelance and special");
- if (fidp->vnode > 1) {
+ if (fidp->vnode > 1 && fidp->vnode <= cm_localMountPoints + 2) {
lock_ObtainMutex(&cm_Freelance_Lock);
mp =(cm_localMountPoints+fidp->vnode-2)->mountPointStringp;
lock_ReleaseMutex(&cm_Freelance_Lock);
cm_data.hashTablep[hash]=scp;
scp->flags |= CM_SCACHEFLAG_INHASH;
scp->refCount = 1;
- scp->fileType = (cm_localMountPoints+fidp->vnode-2)->fileType;
+ if (fidp->vnode > 1 && fidp->vnode <= cm_localMountPoints + 2)
+ scp->fileType = (cm_localMountPoints+fidp->vnode-2)->fileType;
+ else
+ scp->fileType = CM_SCACHETYPE_INVALID;
lock_ObtainMutex(&cm_Freelance_Lock);
scp->length.LowPart = strlen(mp)+4;