to it, in the fileserver. This prevents some additional lossage
cases with poorly-connected clients.
Disable same feature for other Rx services, since they don't
need to incur extra RTT delay.
(cherry picked from commit
feb689396ccc39f304db05cb69dc8db3506de921)
service->idleDeadTime = 60;
service->connDeadTime = rx_connDeadTime;
service->executeRequestProc = serviceProc;
+ service->checkReach = 0;
rx_services[i] = service; /* not visible until now */
AFS_RXGUNLOCK();
USERPRI;
struct rx_peer *peer = conn->peer;
afs_uint32 now, lastReach;
- MUTEX_ENTER(&rx_serverPool_lock);
- if (service->nRequestsRunning <= service->maxProcs/2) {
- MUTEX_EXIT(&rx_serverPool_lock);
+ if (service->checkReach == 0)
return 0;
- }
- MUTEX_EXIT(&rx_serverPool_lock);
now = clock_Sec();
MUTEX_ENTER(&peer->peer_lock);
/* Set the connection dead time for any connections created for this service (server only) */
#define rx_SetServiceDeadTime(service, seconds) ((service)->secondsUntilDead = (seconds))
+/* Enable or disable asymmetric client checking for a service */
+#define rx_SetCheckReach(service, x) ((service)->checkReach = (x))
+
/* Set connection dead time, for a specific client or server connection */
extern void rx_SetConnDeadTime();
u_short minProcs; /* Minimum # of requests guaranteed executable simultaneously */
u_short connDeadTime; /* Seconds until a client of this service will be declared dead, if it is not responding */
u_short idleDeadTime; /* Time a server will wait for I/O to start up again */
+ u_char checkReach; /* Check for asymmetric clients? */
};
#endif /* KDUMP_RX_LOCK */
rx_SetDestroyConnProc(tservice, (char (*)()) h_FreeConnection);
rx_SetMinProcs(tservice, 3);
rx_SetMaxProcs(tservice, lwps);
+ rx_SetCheckReach(tservice, 1);
tservice = rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", sc, 4, RXSTATS_ExecuteRequest);
if (!tservice) {