From: Andrew Deason Date: Tue, 14 Aug 2012 22:25:44 +0000 (-0500) Subject: viced: Move host quota calculation X-Git-Tag: upstream/1.8.0_pre1^2~852 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=31b518fcf184ba122b6faab54e2e4fa0d37605a3;p=packages%2Fo%2Fopenafs.git viced: Move host quota calculation Calculate this during initialization, not every time we want to use it. Change-Id: I931d2f3f0b4b99add682c098dd51f03c9942f5b4 Reviewed-on: http://gerrit.openafs.org/9710 Reviewed-by: Derrick Brashear Tested-by: BuildBot --- diff --git a/src/viced/host.c b/src/viced/host.c index 33ff9c830..c24841c97 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -69,6 +69,7 @@ int rxcon_ident_key; int rxcon_client_key; static struct rx_securityClass *sc = NULL; +static int h_quota_limit; /* arguments for PerHost_EnumerateClient enumeration */ struct enumclient_args { @@ -1606,18 +1607,8 @@ removeInterfaceAddr_r(struct host *host, afs_uint32 addr, afs_uint16 port) 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; } @@ -2185,8 +2176,11 @@ h_GetHost_r(struct rx_connection *tcon) /* 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); diff --git a/src/viced/host.h b/src/viced/host.h index 82338699e..06776a2fe 100644 --- a/src/viced/host.h +++ b/src/viced/host.h @@ -225,7 +225,7 @@ extern void h_GetHostNetStats(afs_int32 * a_numHostsP, afs_int32 * a_sameNetOrSu 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); diff --git a/src/viced/viced.c b/src/viced/viced.c index e47bcbcb3..537607402 100644 --- a/src/viced/viced.c +++ b/src/viced/viced.c @@ -153,6 +153,7 @@ static int panic_timeout = 2 * 60; static int panic_timeout = 30 * 60; #endif +static int host_thread_quota; int rxpackets = 150; /* 100 */ int nSmallVns = 400; /* 200 */ int large = 400; /* 200 */ @@ -1433,6 +1434,16 @@ ParseArgs(int argc, char *argv[]) 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 */ @@ -2064,7 +2075,7 @@ main(int argc, char *argv[]) } 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();