]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
windows-callback-revoke-multi-cell-servers-20071225
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 25 Dec 2007 21:58:51 +0000 (21:58 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 25 Dec 2007 21:58:51 +0000 (21:58 +0000)
LICENSE MIT

Remove the callback revoke optimization that prevents a (vol,vn,uniq)
tupple from invalidating entries from multiple cells.  We cannot reliably
determine the cell from the server because the server might be identified
as belonging to more than one cell.  For example, openafs.org and
grand.central.org.

src/WINNT/afsd/cm_callback.c

index f9148c8303aad414278ab46dc5d357d6317fc6ad..d4d28ff80d1195f1cd7b3b16611456adef4f88ef 100644 (file)
@@ -355,7 +355,6 @@ SRXAFSCB_CallBack(struct rx_call *callp, AFSCBFids *fidsArrayp, AFSCBs *cbsArray
     unsigned long host = 0;
     unsigned short port = 0;
     cm_server_t *tsp = NULL;
-    cm_cell_t * cellp = NULL;
 
     MUTEX_ENTER(&callp->lock);
 
@@ -363,14 +362,13 @@ SRXAFSCB_CallBack(struct rx_call *callp, AFSCBFids *fidsArrayp, AFSCBs *cbsArray
         host = rx_HostOf(peerp);
         port = rx_PortOf(peerp);
 
-        tsp = cm_FindServerByIP(host, CM_SERVER_FILE);
-        if (tsp)
-            cellp = tsp->cellp;
+        osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
+                  ntohl(host),
+                  ntohs(port));
+    } else {
+        osi_Log0(afsd_logp, "SRXAFSCB_CallBack from unknown host");
     }
 
-    osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
-              ntohl(host),
-              ntohs(port));
 
     for (i=0; i < (long) fidsArrayp->AFSCBFids_len; i++) {
         tfidp = &fidsArrayp->AFSCBFids_val[i];
@@ -378,9 +376,9 @@ SRXAFSCB_CallBack(struct rx_call *callp, AFSCBFids *fidsArrayp, AFSCBs *cbsArray
         if (tfidp->Volume == 0)
             continue;   /* means don't do anything */
         else if (tfidp->Vnode == 0)
-            cm_RevokeVolumeCallback(callp, cellp, tfidp);
+            cm_RevokeVolumeCallback(callp, NULL, tfidp);
         else
-            cm_RevokeCallback(callp, cellp, tfidp);
+            cm_RevokeCallback(callp, NULL, tfidp);
     }
 
     MUTEX_EXIT(&callp->lock);