]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Make the Rx deadtime a tunable variable, either with a kernel debugger
authorNickolai Zeldovich <kolya@mit.edu>
Mon, 13 Jan 2003 20:25:54 +0000 (20:25 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Mon, 13 Jan 2003 20:25:54 +0000 (20:25 +0000)
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
src/afs/afs.h
src/afs/afs_call.c
src/afs/afs_conn.c
src/afs/afs_server.c

index d159c8966d70e59fb3c487e26d19e2ffce3927a3..5bb9a5a5dc97d19070fac15d4acecf19187424cf 100644 (file)
@@ -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}
 };
 
index b2d029badacff26dd595a63ab3454294b5adc706..7ee962e22351591afdc1ccb47345e5450bef34cd 100644 (file)
@@ -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;
index 4117ef318616ed202604aa58d8bddfe99a511eda..321444431f9ca0b919b404b2c96f6be2381ce4da 100644 (file)
@@ -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);
 
index e06751b19ba35d4dae549bedd17ebf53b3f7d9f6..7691b2cd95c531a402b8f3d15f6e5839fa115527 100644 (file)
@@ -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)
index a71e7df7f94ccb9f674e6c98d5238e1dfe73c754..550a10dc3b0e422c6a989d1299bd39de19ada0e3 100644 (file)
@@ -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);