Revert "modify FindIndex to compare uuids"
[openafs.git] / src / volser / lockprocs.c
index d18bbda..7ab1c57 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
@@ -17,6 +17,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
+#include <roken.h>
 
 #include <sys/types.h>
 #ifdef AFS_NT40_ENV
 
 /* Finds an index in VLDB entry that matches the volume type, server, and partition.
  * If type is zero, will match first index of ANY type (RW, BK, or RO).
- * If server is zero, will match first index of ANY server and partition 
+ * If server is zero, will match first index of ANY server and partition
  * Zero is a valid partition field.
  */
-int
-FindIndex(struct nvldbentry *entry, afs_int32 server, afs_int32 part, afs_int32 type)
+static int
+FindIndex(struct uvldbentry *entry, afs_uint32 server, afs_int32 part, afs_int32 type)
 {
     int e;
     afs_int32 error = 0;
@@ -53,7 +54,7 @@ FindIndex(struct nvldbentry *entry, afs_int32 server, afs_int32 part, afs_int32
        if (!type || (entry->serverFlags[e] & type)) {
            if ((!server || (entry->serverPartition[e] == part))
                && (!server
-                   || VLDB_IsSameAddrs(entry->serverNumber[e], server,
+                   || VLDB_IsSameAddrs(entry->serverUnique[e], server,
                                        &error)))
                break;
            if (type == ITSRWVOL)
@@ -64,7 +65,7 @@ FindIndex(struct nvldbentry *entry, afs_int32 server, afs_int32 part, afs_int32
     if (error) {
        fprintf(STDERR,
                "Failed to get info about server's %d address(es) from vlserver (err=%d)\n",
-               entry->serverNumber[e], error);
+               entry->serverUnique[e], error);
        return -1;
     }
 
@@ -75,24 +76,23 @@ FindIndex(struct nvldbentry *entry, afs_int32 server, afs_int32 part, afs_int32
 }
 
 /* Changes the rw site only */
-void
-SetAValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart,
-          afs_int32 nserver, afs_int32 npart, afs_int32 type)
+static void
+SetAValue(struct uvldbentry *entry, afs_uint32 oserver, afs_int32 opart,
+          afs_uint32 nserver, afs_int32 npart, afs_int32 type)
 {
     int e;
-    afs_int32 error = 0;
 
     e = FindIndex(entry, oserver, opart, type);
     if (e == -1)
        return;                 /* If didn't find it, just return */
 
-    entry->serverNumber[e] = nserver;
+    entry->serverUnique[e] = nserver;
     entry->serverPartition[e] = npart;
 
     /* Now move rest of entries up */
     if ((nserver == 0L) && (npart == 0L)) {
        for (e++; e < entry->nServers; e++) {
-           entry->serverNumber[e - 1] = entry->serverNumber[e];
+           entry->serverUnique[e - 1] = entry->serverUnique[e];
            entry->serverPartition[e - 1] = entry->serverPartition[e];
            entry->serverFlags[e - 1] = entry->serverFlags[e];
        }
@@ -101,24 +101,59 @@ SetAValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart,
 
 /* Changes the RW site only */
 void
-Lp_SetRWValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart, 
-              afs_int32 nserver, afs_int32 npart)
+Lp_SetRWValue(struct nvldbentry *entryp, afs_uint32 oserver, afs_int32 opart,
+              afs_uint32 nserver, afs_int32 npart)
+{
+    struct uvldbentry uentry;
+
+    nvlentry_to_uvlentry(entryp, &uentry);
+    SetAValue(&uentry, oserver, opart, nserver, npart, ITSRWVOL);
+    uvlentry_to_nvlentry(&uentry, entryp);
+}
+
+void
+Lp_SetRWValueU(struct uvldbentry *entry, afs_uint32 oserver, afs_int32 opart,
+              afs_uint32 nserver, afs_int32 npart)
 {
     SetAValue(entry, oserver, opart, nserver, npart, ITSRWVOL);
 }
 
 /* Changes the RO site only */
 void
-Lp_SetROValue(struct nvldbentry *entry, afs_int32 oserver, 
-              afs_int32 opart, afs_int32 nserver, afs_int32 npart)
+Lp_SetROValue(struct nvldbentry *entryp, afs_uint32 oserver,
+              afs_int32 opart, afs_uint32 nserver, afs_int32 npart)
+{
+    struct uvldbentry uentry;
+
+    nvlentry_to_uvlentry(entryp, &uentry);
+    SetAValue(&uentry, oserver, opart, nserver, npart, ITSROVOL);
+    uvlentry_to_nvlentry(&uentry, entryp);
+}
+
+void
+Lp_SetROValueU(struct uvldbentry *entry, afs_uint32 oserver,
+              afs_int32 opart, afs_uint32 nserver, afs_int32 npart)
 {
     SetAValue(entry, oserver, opart, nserver, npart, ITSROVOL);
 }
 
 /* Returns success if this server and partition matches the RW entry */
-int 
-Lp_Match(afs_int32 server, afs_int32 part,
-         struct nvldbentry *entry)
+int
+Lp_Match(afs_uint32 server, afs_int32 part,
+         struct nvldbentry *entryp)
+{
+    struct uvldbentry uentry;
+
+    nvlentry_to_uvlentry(entryp, &uentry);
+    if (FindIndex(&uentry, server, part, ITSRWVOL) == -1)
+       return 0;
+    uvlentry_to_nvlentry(&uentry, entryp);
+    return 1;
+}
+
+int
+Lp_MatchU(afs_uint32 server, afs_int32 part,
+         struct uvldbentry *entry)
 {
     if (FindIndex(entry, server, part, ITSRWVOL) == -1)
        return 0;
@@ -126,15 +161,41 @@ Lp_Match(afs_int32 server, afs_int32 part,
 }
 
 /* Return the index of the RO entry (plus 1) if it exists, else return 0 */
-int 
-Lp_ROMatch(afs_int32 server, afs_int32 part, struct nvldbentry *entry)
+int
+Lp_ROMatch(afs_uint32 server, afs_int32 part, struct nvldbentry *entryp)
+{
+    struct uvldbentry uentry;
+    int idx;
+
+    nvlentry_to_uvlentry(entryp, &uentry);
+    idx = (FindIndex(&uentry, server, part, ITSROVOL) + 1);
+    if (idx)
+        uvlentry_to_nvlentry(&uentry, entryp);
+    return idx;
+}
+
+int
+Lp_ROMatchU(afs_uint32 server, afs_int32 part, struct uvldbentry *entry)
 {
     return (FindIndex(entry, server, part, ITSROVOL) + 1);
 }
 
 /* Return the index of the RW entry if it exists, else return -1 */
-int 
-Lp_GetRwIndex(struct nvldbentry *entry)
+int
+Lp_GetRwIndex(struct nvldbentry *entryp)
+{
+    struct uvldbentry uentry;
+    int idx;
+
+    nvlentry_to_uvlentry(entryp, &uentry);
+    idx = (FindIndex(&uentry, 0, 0, ITSRWVOL));
+    if (idx > -1)
+        uvlentry_to_nvlentry(&uentry, entryp);
+    return idx;
+}
+
+int
+Lp_GetRwIndexU(struct uvldbentry *entry)
 {
     return (FindIndex(entry, 0, 0, ITSRWVOL));
 }
@@ -165,7 +226,7 @@ Lp_QAdd(struct qHead *ahead, struct aqueue *elem)
     }
 }
 
-int 
+int
 Lp_QScan(struct qHead *ahead, afs_int32 id, int *success, struct aqueue **elem)
 {
     struct aqueue *cptr;