From cfef9796e87e2038100b09342a68b525d06834f3 Mon Sep 17 00:00:00 2001 From: Nickolai Zeldovich Date: Mon, 13 Jan 2003 20:25:54 +0000 Subject: [PATCH] Make the Rx deadtime a tunable variable, either with a kernel debugger of some sort, or sysctl on Linux. To follow later: Rx idle dead time, but this requires more in-depth changes to conn handling and such. --- src/afs/LINUX/osi_sysctl.c | 3 +++ src/afs/afs.h | 5 ++++- src/afs/afs_call.c | 5 ++++- src/afs/afs_conn.c | 7 +++---- src/afs/afs_server.c | 4 ++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c index d159c8966..5bb9a5a5d 100644 --- a/src/afs/LINUX/osi_sysctl.c +++ b/src/afs/LINUX/osi_sysctl.c @@ -37,6 +37,9 @@ static ctl_table afs_sysctl_table[] = { {4, "GCPAGs", &afs_gcpags, sizeof(afs_int32), 0644, NULL, &proc_dointvec}, + {5, "rx_deadtime", + &afs_rx_deadtime, sizeof(afs_int32), 0644, NULL, + &proc_dointvec}, {0} }; diff --git a/src/afs/afs.h b/src/afs/afs.h index b2d029bad..7ee962e22 100644 --- a/src/afs/afs.h +++ b/src/afs/afs.h @@ -84,7 +84,10 @@ extern int afs_shuttingdown; #define VCACHE_FREE 5 #define AFS_NRXPACKETS 80 #define AFS_RXDEADTIME 50 -#define AFS_HARDDEADTIME 120 +#define AFS_HARDDEADTIME 120 + +extern afs_int32 afs_rx_deadtime; +extern afs_int32 afs_rx_harddead; struct sysname_info { char *name; diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c index 4117ef318..321444431 100644 --- a/src/afs/afs_call.c +++ b/src/afs/afs_call.c @@ -89,6 +89,9 @@ extern struct interfaceAddr afs_cb_interface; static int afs_RX_Running = 0; static int afs_InitSetup_done = 0; +afs_int32 afs_rx_deadtime = AFS_RXDEADTIME; +afs_int32 afs_rx_harddead = AFS_HARDDEADTIME; + static int Afscall_icl(long opcode, long p1, long p2, long p3, long p4, long *retval); @@ -125,7 +128,7 @@ static int afs_InitSetup(int preallocs) printf("AFS: RX failed to initialize.\n"); return code; } - rx_SetRxDeadTime(AFS_RXDEADTIME); + rx_SetRxDeadTime(afs_rx_deadtime); /* resource init creates the services */ afs_ResourceInit(preallocs); diff --git a/src/afs/afs_conn.c b/src/afs/afs_conn.c index e06751b19..7691b2cd9 100644 --- a/src/afs/afs_conn.c +++ b/src/afs/afs_conn.c @@ -226,10 +226,9 @@ struct conn *afs_ConnBySA(struct srvAddr *sap, unsigned short aport, AFS_GUNLOCK(); tc->id = rx_NewConnection(sap->sa_ip, aport, service, csec, isec); AFS_GLOCK(); - if (service == 52) { - rx_SetConnHardDeadTime(tc->id, AFS_HARDDEADTIME); - } - + if (service == 52) { + rx_SetConnHardDeadTime(tc->id, afs_rx_harddead); + } tc->forceConnectFS = 0; /* apparently we're appropriately connected now */ if (csec) diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index a71e7df7f..550a10dc3 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -303,7 +303,7 @@ static void CheckVLServer(register struct srvAddr *sa, struct vrequest *areq) RX_AFS_GUNLOCK(); code = VL_ProbeServer(tc->id); RX_AFS_GLOCK(); - rx_SetConnDeadTime(tc->id, AFS_RXDEADTIME); + rx_SetConnDeadTime(tc->id, afs_rx_deadtime); afs_PutConn(tc, SHARED_LOCK); /* * If probe worked, or probe call not yet defined (for compatibility @@ -616,7 +616,7 @@ void afs_CheckServers(int adown, struct cell *acellp) afs_setTimeHost = tc->srvr->server; } if (setTimer) - rx_SetConnDeadTime(tc->id, AFS_RXDEADTIME); + rx_SetConnDeadTime(tc->id, afs_rx_deadtime); if (code >= 0 && (sa->sa_flags & SRVADDR_ISDOWN) && (tc->srvr == sa)) { /* server back up */ print_internet_address("afs: file server ", sa, " is back up", 2); -- 2.39.5