Windows: remove extraneous "pingCount" format param
[openafs.git] / src / WINNT / afsd / cm_server.c
index 44b928a..89e8c43 100644 (file)
@@ -263,19 +263,16 @@ cm_PingServer(cm_server_t *tsp)
     cm_req_t req;
 
     lock_ObtainMutex(&tsp->mx);
-    if (tsp->flags & CM_SERVERFLAG_PINGING) {
+    if (InterlockedIncrement(&tsp->pingCount) > 1) {
        tsp->waitCount++;
        osi_SleepM((LONG_PTR)tsp, &tsp->mx);
        lock_ObtainMutex(&tsp->mx);
-       tsp->waitCount--;
-       if (tsp->waitCount == 0)
-           _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_PINGING);
-       else
+       InterlockedDecrement(&tsp->pingCount);
+       if (--tsp->waitCount > 0)
            osi_Wakeup((LONG_PTR)tsp);
        lock_ReleaseMutex(&tsp->mx);
        return;
     }
-    _InterlockedOr(&tsp->flags, CM_SERVERFLAG_PINGING);
     wasDown = tsp->flags & CM_SERVERFLAG_DOWN;
     afs_inet_ntoa_r(tsp->addr.sin_addr.S_un.S_addr, hoststr);
     lock_ReleaseMutex(&tsp->mx);
@@ -313,14 +310,13 @@ cm_PingServer(cm_server_t *tsp)
     }  /* got an unauthenticated connection to this server */
 
     lock_ObtainMutex(&tsp->mx);
-    if (code >= 0 || code == RXGEN_OPCODE || code == RX_CALL_BUSY) {
+    if (code >= 0 || code == RXGEN_OPCODE) {
        /* mark server as up */
        _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_DOWN);
         tsp->downTime = 0;
 
        /* we currently handle 32-bits of capabilities */
-       if (code != RXGEN_OPCODE && code != RX_CALL_BUSY &&
-            caps.Capabilities_len > 0) {
+       if (code != RXGEN_OPCODE && caps.Capabilities_len > 0) {
            tsp->capabilities = caps.Capabilities_val[0];
            xdr_free((xdrproc_t) xdr_Capabilities, &caps);
            caps.Capabilities_len = 0;
@@ -367,9 +363,8 @@ cm_PingServer(cm_server_t *tsp)
                  tsp->capabilities);
     }
 
-    if (tsp->waitCount == 0)
-       _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_PINGING);
-    else
+    InterlockedDecrement(&tsp->pingCount);
+    if (tsp->waitCount > 0)
        osi_Wakeup((LONG_PTR)tsp);
     lock_ReleaseMutex(&tsp->mx);
 }
@@ -520,7 +515,7 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
             lock_ObtainMutex(&tsp->mx);
             isDown = tsp->flags & CM_SERVERFLAG_DOWN;
 
-            if ((tsp->flags & CM_SERVERFLAG_PINGING) ||
+           if (tsp->pingCount > 0 ||
                 !((isDown && (flags & CM_FLAG_CHECKDOWNSERVERS)) ||
                    (!isDown && (flags & CM_FLAG_CHECKUPSERVERS)))) {
                 lock_ReleaseMutex(&tsp->mx);
@@ -529,7 +524,7 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
                 continue;
             }
 
-            _InterlockedOr(&tsp->flags, CM_SERVERFLAG_PINGING);
+           InterlockedIncrement(&tsp->pingCount);
             lock_ReleaseMutex(&tsp->mx);
 
             serversp[nconns] = tsp;
@@ -579,15 +574,13 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
             lock_ObtainMutex(&tsp->mx);
             wasDown = tsp->flags & CM_SERVERFLAG_DOWN;
 
-            if (results[i] >= 0 || results[i] == RXGEN_OPCODE ||
-                results[i] == RX_CALL_BUSY)  {
+            if (results[i] >= 0 || results[i] == RXGEN_OPCODE) {
                 /* mark server as up */
                 _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_DOWN);
                 tsp->downTime = 0;
 
                 /* we currently handle 32-bits of capabilities */
-                if (results[i] != RXGEN_OPCODE && results[i] != RX_CALL_BUSY &&
-                    caps[i].Capabilities_len > 0) {
+                if (results[i] != RXGEN_OPCODE && caps[i].Capabilities_len > 0) {
                     tsp->capabilities = caps[i].Capabilities_val[0];
                     xdr_free((xdrproc_t) xdr_Capabilities, &caps[i]);
                     caps[i].Capabilities_len = 0;
@@ -636,9 +629,8 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
                           tsp->capabilities);
             }
 
-            if (tsp->waitCount == 0)
-                _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_PINGING);
-            else
+           InterlockedDecrement(&tsp->pingCount);
+           if (tsp->waitCount > 0)
                 osi_Wakeup((LONG_PTR)tsp);
 
             lock_ReleaseMutex(&tsp->mx);
@@ -665,7 +657,7 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
             lock_ObtainMutex(&tsp->mx);
             isDown = tsp->flags & CM_SERVERFLAG_DOWN;
 
-            if ((tsp->flags & CM_SERVERFLAG_PINGING) ||
+           if (tsp->pingCount > 0 ||
                 !((isDown && (flags & CM_FLAG_CHECKDOWNSERVERS)) ||
                    (!isDown && (flags & CM_FLAG_CHECKUPSERVERS)))) {
                 lock_ReleaseMutex(&tsp->mx);
@@ -674,7 +666,7 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
                 continue;
             }
 
-            _InterlockedOr(&tsp->flags, CM_SERVERFLAG_PINGING);
+           InterlockedIncrement(&tsp->pingCount);
             lock_ReleaseMutex(&tsp->mx);
 
             serversp[nconns] = tsp;
@@ -725,7 +717,7 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
             lock_ObtainMutex(&tsp->mx);
             wasDown = tsp->flags & CM_SERVERFLAG_DOWN;
 
-            if (results[i] >= 0 || results[i] == RX_CALL_BUSY)  {
+            if (results[i] >= 0)  {
                 /* mark server as up */
                 _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_DOWN);
                 tsp->downTime = 0;
@@ -748,9 +740,8 @@ static void cm_CheckServersMulti(afs_uint32 flags, cm_cell_t *cellp)
                           tsp->capabilities);
             }
 
-            if (tsp->waitCount == 0)
-                _InterlockedAnd(&tsp->flags, ~CM_SERVERFLAG_PINGING);
-            else
+           InterlockedDecrement(&tsp->pingCount);
+           if (tsp->waitCount > 0)
                 osi_Wakeup((LONG_PTR)tsp);
 
             lock_ReleaseMutex(&tsp->mx);
@@ -1532,7 +1523,7 @@ void cm_AppendServerList(cm_serverRef_t *dest, cm_serverRef_t **src)
 {
     cm_serverRef_t *ref;
 
-    if (dest == NULL | src == NULL || *src == NULL)
+    if (dest == NULL || src == NULL || *src == NULL)
        return;
 
     for (ref = dest; ref->next != NULL; ref = ref->next);
@@ -1638,10 +1629,12 @@ int cm_DumpServers(FILE *outputFile, char *cookie, int lock)
 
         sprintf(output,
                  "%s - tsp=0x%p cell=%s addr=%-15s port=%u uuid=%s type=%s caps=0x%x "
-                 "flags=0x%x waitCount=%u rank=%u downTime=\"%s\" refCount=%u\r\n",
+                "flags=0x%x waitCount=%u pingCount=%d rank=%u downTime=\"%s\" "
+                "refCount=%u\r\n",
                  cookie, tsp, tsp->cellp ? tsp->cellp->name : "", hoststr,
                  ntohs(tsp->addr.sin_port), uuidstr, type,
-                 tsp->capabilities, tsp->flags, tsp->waitCount, tsp->activeRank,
+                tsp->capabilities, tsp->flags, tsp->waitCount, tsp->pingCount,
+                tsp->activeRank,
                  (tsp->flags & CM_SERVERFLAG_DOWN) ?  "down" : "up",
                  tsp->refCount);
         WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);