if (tsrvp->ids[i] != 0) {
cm_InitReq(&req);
+ lock_ReleaseMutex(&tsp->mx);
code = cm_GetVolumeByID(tsp->cellp, tsrvp->ids[i], cm_rootUserp,
&req, CM_GETVOL_FLAG_NO_LRU_UPDATE, &volp);
+ lock_ObtainMutex(&tsp->mx);
if (code == 0) {
cm_UpdateVolumeStatus(volp, tsrvp->ids[i]);
cm_PutVolume(volp);
tsp->refCount = 1;
lock_InitializeMutex(&tsp->mx, "cm_server_t mutex");
tsp->addr = *socketp;
- tsp->flags = CM_SERVERFLAG_DOWN; /* assume down; ping will mark up if available */
cm_SetServerPrefs(tsp);
cm_allServersp = tsp;
lock_ReleaseWrite(&cm_serverLock); /* release server lock */
- if ( !(flags & CM_FLAG_NOPROBE) )
+ if ( !(flags & CM_FLAG_NOPROBE) ) {
+ tsp->flags = CM_SERVERFLAG_DOWN; /* assume down; ping will mark up if available */
cm_PingServer(tsp); /* Obtain Capabilities and check up/down state */
+ }
}
return tsp;
}