The following patch adds a "-clienttimeout" option to the fileserver, which takes one argument, a number of minutes to be used in aging out idle client connections.

The 2 hour default is too long in an environment where some hosts could be creating and abandoning client connections at a high rate (such as a fileserver that has clients that are running something nutty like this: http://www.umbc.edu/oit/iss/syscore/wiki/Mod_waklog).

This patch is against the 1.4.2 release.

diff -c -r openafs-1.4.2-dist/src/viced/host.c openafs-1.4.2- clienttimeout/src/viced/host.c
*** openafs-1.4.2-dist/src/viced/host.c Tue Sep  5 18:09:00 2006
--- openafs-1.4.2-clienttimeout/src/viced/host.c Fri Mar 16 11:44:21 2007
***************
*** 68,73 ****
--- 68,74 ----
  extern int CurrentConnections;
  extern int SystemId;
  extern int AnonymousID;
+ extern int clientTimeout;
  extern prlist AnonCPS;
  extern int LogLevel;
  extern struct afsconf_dir *confDir;   /* config dir object */
***************
*** 2626,2632 ****
       * 15 minutes
       */
      checktime = now - 15 * 60;
!     clientdeletetime = now - 120 * 60;        /* 2 hours ago */
      h_Enumerate(CheckHost, NULL);

  }                             /*h_CheckHosts */
--- 2627,2633 ----
       * 15 minutes
       */
      checktime = now - 15 * 60;
! clientdeletetime = now - clientTimeout * 60; /* configurable */
      h_Enumerate(CheckHost, NULL);

  }                             /*h_CheckHosts */
diff -c -r openafs-1.4.2-dist/src/viced/viced.c openafs-1.4.2- clienttimeout/src/viced/viced.c
*** openafs-1.4.2-dist/src/viced/viced.c        Fri Sep 15 19:19:28 2006
--- openafs-1.4.2-clienttimeout/src/viced/viced.c Fri Mar 16 12:00:43 2007
***************
*** 193,198 ****
--- 193,199 ----
  int abort_threshold = 10;
  int udpBufSize = 0;           /* UDP buffer size for receive */
  int sendBufSize = 16384;      /* send buffer size */
+ int clientTimeout = 120; /* 2 hours is the default */

  struct timeval tp;

***************
*** 758,763 ****
--- 759,765 ----
      strcat(buffer, "[-udpsize <size of socket buffer in bytes>] ");
      strcat(buffer, "[-sendsize <size of send buffer in bytes>] ");
      strcat(buffer, "[-abortthreshold <abort threshold>] ");
+     strcat(buffer, "[-clienttimeout <minutes>] ");
  /*   strcat(buffer, "[-enable_peer_stats] "); */
  /*   strcat(buffer, "[-enable_process_stats] "); */
      strcat(buffer, "[-help]\n");
***************
*** 1110,1115 ****
--- 1112,1129 ----
                     bufSize, 16384);
            else
                sendBufSize = bufSize;
+     } else if (!strcmp(argv[i], "-clienttimeout" )) {
+         if ((i + 1) >= argc) {
+ printf("You have to specify -clienttimeout <integer value>\n");
+                   return -1;
+           }
+           clientTimeout = atoi(argv[++i]);
+           if (clientTimeout < 1) {
+                   printf
+                   ("Error: clienttimeout %d is insane\n",
+                    clientTimeout);
+                   return -1;
+               }
        } else if (!strcmp(argv[i], "-enable_peer_stats")) {
            rx_enablePeerRPCStats();
        } else if (!strcmp(argv[i], "-enable_process_stats")) {
***************
*** 1157,1163 ****
        else if (strcmp(argv[i], "-mrafslogs") == 0) {
            /* set syslog logging flag */
            mrafsStyleLogs = 1;
!       }
        else {
            return (-1);
        }
--- 1171,1177 ----
        else if (strcmp(argv[i], "-mrafslogs") == 0) {
            /* set syslog logging flag */
            mrafsStyleLogs = 1;
!       }
        else {
            return (-1);
        }


_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to