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 f9148c8..d4d28ff 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);