int rxcon_client_key;
static struct rx_securityClass *sc = NULL;
+static int h_quota_limit;
/* arguments for PerHost_EnumerateClient enumeration */
struct enumclient_args {
static int
h_threadquota(int waiting)
{
- if (lwps > 64) {
- if (waiting > 5)
- return 1;
- } else if (lwps > 32) {
- if (waiting > 4)
- return 1;
- } else if (lwps > 16) {
- if (waiting > 3)
- return 1;
- } else {
- if (waiting > 2)
- return 1;
+ if (waiting > h_quota_limit) {
+ return 1;
}
return 0;
}
/* not reentrant */
void
-h_InitHostPackage(void)
+h_InitHostPackage(int hquota)
{
+ opr_Assert(hquota > 0);
+ h_quota_limit = hquota;
+
memset(&nulluuid, 0, sizeof(afsUUID));
rxcon_ident_key = rx_KeyCreate((rx_destructor_t) free);
rxcon_client_key = rx_KeyCreate((rx_destructor_t) 0);
afs_int32 * a_diffSubnetP, afs_int32 * a_diffNetworkP);
extern int h_NBLock_r(struct host *host);
extern void h_DumpHosts(void);
-extern void h_InitHostPackage(void);
+extern void h_InitHostPackage(int hquota);
extern void h_CheckHosts(void );
extern void h_AddHostToAddrHashTable_r(afs_uint32 addr, afs_uint16 port, struct host * host);
extern void h_AddHostToUuidHashTable_r(afsUUID * uuid, struct host * host);
static int panic_timeout = 30 * 60;
#endif
+static int host_thread_quota;
int rxpackets = 150; /* 100 */
int nSmallVns = 400; /* 200 */
int large = 400; /* 200 */
if (auditFileName)
osi_audit_file(auditFileName);
+ if (lwps > 64) {
+ host_thread_quota = 5;
+ } else if (lwps > 32) {
+ host_thread_quota = 4;
+ } else if (lwps > 16) {
+ host_thread_quota = 3;
+ } else {
+ host_thread_quota = 2;
+ }
+
return (0);
} /*ParseArgs */
}
init_sys_error_to_et(); /* Set up error table translation */
- h_InitHostPackage(); /* set up local cellname and realmname */
+ h_InitHostPackage(host_thread_quota); /* set up local cellname and realmname */
InitCallBack(numberofcbs);
ClearXStatValues();