windows-callback-restore-multi-cell-servers-20071226
[openafs.git] / src / WINNT / afsd / cm_callback.c
index d4d28ff..2212359 100644 (file)
@@ -355,6 +355,7 @@ 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);
 
@@ -362,9 +363,19 @@ SRXAFSCB_CallBack(struct rx_call *callp, AFSCBFids *fidsArrayp, AFSCBs *cbsArray
         host = rx_HostOf(peerp);
         port = rx_PortOf(peerp);
 
-        osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
-                  ntohl(host),
-                  ntohs(port));
+        tsp = cm_FindServerByIP(host, CM_SERVER_FILE);
+        if (tsp)
+            cellp = tsp->cellp;
+
+        if (cellp)
+            osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
+                     ntohl(host),
+                     ntohs(port));
+        else 
+            osi_Log3(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d for cell %s",
+                     ntohl(host),
+                     ntohs(port),
+                     cellp->name /* does not need to be saved, doesn't change */);
     } else {
         osi_Log0(afsd_logp, "SRXAFSCB_CallBack from unknown host");
     }
@@ -376,9 +387,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, NULL, tfidp);
+            cm_RevokeVolumeCallback(callp, cellp, tfidp);
         else
-            cm_RevokeCallback(callp, NULL, tfidp);
+            cm_RevokeCallback(callp, cellp, tfidp);
     }
 
     MUTEX_EXIT(&callp->lock);