unsigned long host = 0;
unsigned short port = 0;
cm_server_t *tsp = NULL;
+ cm_cell_t* cellp = NULL;
MUTEX_ENTER(&callp->lock);
host = rx_HostOf(peerp);
port = rx_PortOf(peerp);
- osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
- ntohl(host),
- ntohs(port));
+ tsp = cm_FindServerByIP(host, CM_SERVER_FILE);
+ if (tsp)
+ cellp = tsp->cellp;
+
+ if (cellp)
+ osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
+ ntohl(host),
+ ntohs(port));
+ else
+ osi_Log3(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d for cell %s",
+ ntohl(host),
+ ntohs(port),
+ cellp->name /* does not need to be saved, doesn't change */);
} else {
osi_Log0(afsd_logp, "SRXAFSCB_CallBack from unknown host");
}
if (tfidp->Volume == 0)
continue; /* means don't do anything */
else if (tfidp->Vnode == 0)
- cm_RevokeVolumeCallback(callp, NULL, tfidp);
+ cm_RevokeVolumeCallback(callp, cellp, tfidp);
else
- cm_RevokeCallback(callp, NULL, tfidp);
+ cm_RevokeCallback(callp, cellp, tfidp);
}
MUTEX_EXIT(&callp->lock);
osi_rwlock_t cm_cellLock;
/* function called as callback proc from cm_SearchCellFile. Return 0 to
- * continue processing.
+ * continue processing.
+ *
+ * At the present time the return value is ignored by the caller.
*/
long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *namep)
{
{
if ( !tsp->cellp )
tsp->cellp = cellp;
+ else if (tsp->cellp != cellp) {
+ osi_Log2(afsd_logp, "found a vlserver associated with two cell names %s and %s",
+ osi_LogSaveString(afsd_logp,tsp->cellp->name), osi_LogSaveString(afsd_logp,cellp->name));
+ }
}
else
tsp = cm_NewServer(addrp, CM_SERVER_VLDB, cellp);
lock_ObtainWrite(&cm_serverLock);
tsrp->refCount--;
lock_ReleaseWrite(&cm_serverLock);
+
return 0;
}