]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: fs checkservers should list vldb as well
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 23 Dec 2010 04:23:48 +0000 (23:23 -0500)
committerDerrick Brashear <shadow@dementia.org>
Thu, 3 Feb 2011 02:38:54 +0000 (18:38 -0800)
The Windows fs checkservers has only listed offline
file servers.  Include vldb as well to match the Unix
cache manager.

Reviewed-on: http://gerrit.openafs.org/3602
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit e4b59c633962d7784485f8e2d4185edaf91bf23d)

Change-Id: Ic8053f7307ee937add5e0d5b9e35c03cf8ccb302
Reviewed-on: http://gerrit.openafs.org/3808
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/WINNT/afsd/cm_ioctl.c

index 94979719352c67929de03f5900c9a14ee566c6d1..6049e3f83ccd3ca9928679b5678d1b3e09ee5232 100644 (file)
@@ -1265,10 +1265,20 @@ cm_IoctlCheckServers(struct cm_ioctl *ioctlp, struct cm_user *userp)
     for (tsp = cm_allServersp; tsp; tsp=tsp->allNextp) {
         if (cellp && tsp->cellp != cellp) 
             continue;  /* cell spec'd and wrong */
-        if ((tsp->flags & CM_SERVERFLAG_DOWN)
-            && tsp->type == CM_SERVER_FILE) {
-            memcpy(cp, (char *)&tsp->addr.sin_addr.s_addr, sizeof(long));
-            cp += sizeof(long);
+        if (tsp->flags & CM_SERVERFLAG_DOWN) {
+            /*
+             * all server types are being reported by ipaddr.  only report
+             * a server once regardless of how many services are down.
+             */
+            for (tp = ioctlp->outDatap; tp < cp; tp += sizeof(long)) {
+                if (!memcmp(tp, (char *)&tsp->addr.sin_addr.s_addr, sizeof(long)))
+                    break;
+            }
+
+            if (tp == cp) {
+                memcpy(cp, (char *)&tsp->addr.sin_addr.s_addr, sizeof(long));
+                cp += sizeof(long);
+            }
         }
     }
     lock_ReleaseRead(&cm_serverLock);