Windows: Log cell along with volume id for server errors
authorJeffrey Altman <jaltman@your-file-system.com>
Sat, 21 Aug 2010 04:23:45 +0000 (00:23 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Mon, 6 Sep 2010 03:53:23 +0000 (20:53 -0700)
When logging server volume instance errors to the windows
application event log, be sure to log the cell as well.
Translating from server ip address is non-trivial.  Make it
easier for administrators triaging issues to plug the volume
and cell info into vos commands.

LICENSE MIT

Change-Id: I801fcd5c1afba4a8cdef4386fec72b9a529d4cfb
Reviewed-on: http://gerrit.openafs.org/2653
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

src/WINNT/afsd/afsd_eventlog.c
src/WINNT/afsd/afsd_eventmessages.mc
src/WINNT/afsd/cm_conn.c

index 065ec5a..0709246 100644 (file)
@@ -233,6 +233,12 @@ LogEvent(WORD wEventType, DWORD dwEventID, ...)
     case MSG_SERVER_REPORTS_VIO:
     case MSG_SERVER_REPORTS_VBUSY:
     case MSG_SERVER_REPORTS_VRESTARTING:
+       wNumArgs = 3;
+       lpArgs[0] = va_arg(listArgs, LPTSTR);
+       StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,afs_int32));
+       lpArgs[1] = lpStrings[1];
+       lpArgs[2] = va_arg(listArgs, LPTSTR);
+        break;
     case MSG_ALL_SERVERS_BUSY:
     case MSG_ALL_SERVERS_OFFLINE:
     case MSG_ALL_SERVERS_DOWN:
index eb5dc36..9e714a6 100644 (file)
@@ -114,7 +114,7 @@ Severity=Warning
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VNOVOL
 Language=English
-Server %1 reported volume %2 as not attached (may have been moved or deleted).
+Server %1 reported volume %2 in cell %3 as not attached (may have been moved or deleted).
 .
 
 MessageId=
@@ -122,7 +122,7 @@ Severity=Informational
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VMOVED
 Language=English
-Server %1 reported volume %2 as moved.
+Server %1 reported volume %2 in cell %3 as moved.
 .
 
 MessageId=
@@ -130,7 +130,7 @@ Severity=Warning
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VOFFLINE
 Language=English
-Server %1 reported volume %2 as offline.
+Server %1 reported volume %2 in cell %3 as offline.
 .
 
 MessageId=
@@ -138,7 +138,7 @@ Severity=Warning
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VSALVAGE
 Language=English
-Server %1 reported volume %2 as needs salvage.
+Server %1 reported volume %2 in cell %3 as needs salvage.
 .
 
 MessageId=
@@ -146,7 +146,7 @@ Severity=Warning
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VNOSERVICE
 Language=English
-Server %1 reported volume %2 as not in service.
+Server %1 reported volume %2 in cell %3 as not in service.
 .
 
 MessageId=
@@ -154,7 +154,7 @@ Severity=Warning
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VIO
 Language=English
-Server %1 reported volume %2 as temporarily unaccessible.
+Server %1 reported volume %2 in cell %3 as temporarily unaccessible.
 .
 
 
@@ -387,7 +387,7 @@ Severity=Informational
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VBUSY
 Language=English
-Server %1 reported busy when accessing volume %2.
+Server %1 reported busy when accessing volume %2 in cell %3.
 .
 
 MessageId=
@@ -395,7 +395,7 @@ Severity=Informational
 Facility=System
 SymbolicName=MSG_SERVER_REPORTS_VRESTARTING
 Language=English
-Server %1 reported restarting when accessing volume %2.
+Server %1 reported restarting when accessing volume %2 in cell %3.
 .
 
 MessageId=
index c88ab95..a284cf2 100644 (file)
@@ -458,11 +458,11 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
         switch ( errorCode ) {
         case VBUSY:
            msgID = MSG_SERVER_REPORTS_VBUSY;
-            format = "Server %s reported busy when accessing volume %d.";
+            format = "Server %s reported busy when accessing volume %d in cell %s.";
             break;
         case VRESTARTING:
            msgID = MSG_SERVER_REPORTS_VRESTARTING;
-            format = "Server %s reported restarting when accessing volume %d.";
+            format = "Server %s reported restarting when accessing volume %d in cell %s.";
             break;
         }
 
@@ -474,8 +474,8 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
                    ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
                    ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24));
 
-           osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume);
-           LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume);
+           osi_Log3(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume, cellp->name);
+           LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume, cellp->name);
         }
 
         lock_ObtainWrite(&cm_serverLock);
@@ -524,43 +524,43 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
         switch ( errorCode ) {
         case VNOVOL:
            msgID = MSG_SERVER_REPORTS_VNOVOL;
-            format = "Server %s reported volume %d as not attached (does not exist).";
+            format = "Server %s reported volume %d in cell %s as not attached (does not exist).";
             break;
         case VMOVED:
            msgID = MSG_SERVER_REPORTS_VMOVED;
-            format = "Server %s reported volume %d as moved.";
+            format = "Server %s reported volume %d in cell %s as moved.";
             break;
         case VOFFLINE:
            msgID = MSG_SERVER_REPORTS_VOFFLINE;
-            format = "Server %s reported volume %d as offline.";
+            format = "Server %s reported volume %d in cell %s as offline.";
             break;
         case VSALVAGE:
            msgID = MSG_SERVER_REPORTS_VSALVAGE;
-            format = "Server %s reported volume %d as needs salvage.";
+            format = "Server %s reported volume %d in cell %s as needs salvage.";
             break;
         case VNOSERVICE:
            msgID = MSG_SERVER_REPORTS_VNOSERVICE;
-            format = "Server %s reported volume %d as not in service.";
+            format = "Server %s reported volume %d in cell %s as not in service.";
             break;
         case VIO:
            msgID = MSG_SERVER_REPORTS_VIO;
-            format = "Server %s reported volume %d as temporarily unaccessible.";
+            format = "Server %s reported volume %d in cell %s as temporarily unaccessible.";
             break;
         }
 
-        if (serverp && fidp) {
-            /* Log server being offline for this volume */
-            sprintf(addr, "%d.%d.%d.%d", 
-                   ((serverp->addr.sin_addr.s_addr & 0xff)),
-                   ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8),
-                   ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
-                   ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); 
-
-           osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume);
-           LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume);
-        }
-
         if (fidp) { /* File Server query */
+            if (serverp) {
+                /* Log server being offline for this volume */
+                sprintf(addr, "%d.%d.%d.%d",
+                         ((serverp->addr.sin_addr.s_addr & 0xff)),
+                         ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8),
+                         ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
+                         ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24));
+
+                osi_Log3(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume, cellp->name);
+                LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume, cellp->name);
+            }
+
             code = cm_FindVolumeByID(cellp, fidp->volume, userp, reqp,
                                       CM_GETVOL_FLAG_NO_LRU_UPDATE,
                                       &volp);
@@ -972,7 +972,6 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
     else if (retry && dead_session)
         retry = 0;
 
-  out:
     /* drop this on the way out */
     if (connp)
         cm_PutConn(connp);