Windows: Prevent cm_daemon thread from terminating during suspend
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 15 Aug 2009 01:40:22 +0000 (21:40 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Sat, 15 Aug 2009 11:07:05 +0000 (04:07 -0700)
Remove the check for powerStateSuspend that caused the cm_daemon
thread to terminate when the machine enters suspend mode.  When
the machine awakens there is no thread to check the down server
state, new IP address bindings, etc.

LICENSE MIT

Reviewed-on: http://gerrit.openafs.org/315
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

src/WINNT/afsd/cm_daemon.c

index 24019cf..8e14677 100644 (file)
@@ -463,12 +463,14 @@ void cm_Daemon(long parm)
             lastDownServerCheck = now;
            osi_Log0(afsd_logp, "cm_Daemon CheckDownServers");
             cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, NULL);
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
 
-        if (bAddrChangeCheck)
+        if (bAddrChangeCheck &&
+            daemon_ShutdownFlag == 0 &&
+            powerStateSuspended == 0)
             cm_ForceNewConnectionsAllServers();
 
         /* check up servers */
@@ -478,12 +480,14 @@ void cm_Daemon(long parm)
             lastUpServerCheck = now;
            osi_Log0(afsd_logp, "cm_Daemon CheckUpServers");
             cm_CheckServers(CM_FLAG_CHECKUPSERVERS, NULL);
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
 
-        if (bAddrChangeCheck) {
+        if (bAddrChangeCheck &&
+            daemon_ShutdownFlag == 0 &&
+            powerStateSuspended == 0) {
             smb_CheckVCs();
             cm_VolStatus_Network_Addr_Change();
         }
@@ -493,7 +497,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastVolCheck = now;
             cm_RefreshVolumes();
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
@@ -504,7 +508,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastVolCBRenewalCheck = now;
             cm_VolumeRenewROCallbacks();
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
             now = osi_Time();
         }
@@ -514,7 +518,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastVolCheck = now;
             cm_CheckOfflineVolumes();
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
@@ -524,7 +528,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastCBExpirationCheck = now;
             cm_CheckCBExpiration();
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
@@ -534,7 +538,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastLockCheck = now;
             cm_CheckLocks();
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
@@ -544,7 +548,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastTokenCacheCheck = now;
             cm_CheckTokenCache(now);
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }
@@ -566,10 +570,11 @@ void cm_Daemon(long parm)
             {
                 SetEvent(WaitToTerminate);
             }
-        }
 
-        if (daemon_ShutdownFlag == 1 || powerStateSuspended) {
-            break;
+            if (daemon_ShutdownFlag == 1) {
+                break;
+            }
+           now = osi_Time();
         }
 
         if (cm_daemonPerformanceTuningInterval &&
@@ -578,7 +583,7 @@ void cm_Daemon(long parm)
             powerStateSuspended == 0) {
             lastPerformanceCheck = now;
             cm_PerformanceTuningCheck();
-            if (daemon_ShutdownFlag == 1 || powerStateSuspended)
+            if (daemon_ShutdownFlag == 1)
                 break;
            now = osi_Time();
         }