Windows: Disable hard dead timeout for RDR File Server connections
authorJeffrey Altman <jaltman@your-file-system.com>
Wed, 19 Dec 2012 21:52:34 +0000 (16:52 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Fri, 1 Feb 2013 18:47:45 +0000 (10:47 -0800)
The UNIX cache manager does not implement hard dead timeouts
on file server connections.  The Windows cache manager had to
because of the SMB connection timeout requirements.  For the
AFS redirector there is no timeout requirement.  Therefore,
when the SMB stack is disabled the Windows cache manager can
disable the hard dead timeout.

The idle dead timeouts are in place to cancel connections when
file servers stop replying with real data.

Change-Id: I44f77b78a52e7cac3a88a53830748b77f3ff4000
Reviewed-on: http://gerrit.openafs.org/8828
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsd/cm_conn.c

index c2aa8b2..b1d6f40 100644 (file)
@@ -355,7 +355,8 @@ cm_Analyze(cm_conn_t *connp,
 
     /* timeleft - get it from reqp the same way as cm_ConnByMServers does */
     timeUsed = (GetTickCount() - reqp->startTime) / 1000;
-    if ( reqp->flags & CM_REQ_SOURCE_SMB )
+    if ( (reqp->flags & CM_REQ_SOURCE_SMB) ||
+         (serverp && serverp->type == CM_SERVER_VLDB))
         timeLeft = HardDeadtimeout - timeUsed;
     else
         timeLeft = 0x0FFFFFFF;
@@ -1552,7 +1553,8 @@ static void cm_NewRXConnection(cm_conn_t *tcp, cm_ucell_t *ucellp,
                                     secObjp,
                                     secIndex);
     rx_SetConnDeadTime(tcp->rxconnp, ConnDeadtimeout);
-    rx_SetConnHardDeadTime(tcp->rxconnp, HardDeadtimeout);
+    if (smb_Enabled || tcp->serverp->type == CM_SERVER_VLDB)
+        rx_SetConnHardDeadTime(tcp->rxconnp, HardDeadtimeout);
 
     /*
      * Setting idle dead timeout to a non-zero value activates RX_CALL_IDLE errors