[openib-general] [PATCH] OpenSM/osm_trap_rcv.c: Reduce repeated trap messages so log doesn't fill so quickly

Hal Rosenstock halr at voltaire.com
Tue Nov 21 05:51:12 PST 2006


OpenSM/osm_trap_rcv.c: Reduce repeated trap messages so log doesn't fill
so quickly

Signed-off-by: Hal Rosenstock <halr at voltaire.com>

Index: opensm/osm_trap_rcv.c
===================================================================
--- opensm/osm_trap_rcv.c	(revision 10137)
+++ opensm/osm_trap_rcv.c	(working copy)
@@ -34,7 +34,6 @@
  * $Id$
  */
 
-
 /*
  * Abstract:
  *    Implementation of osm_trap_rcv_t.
@@ -299,6 +298,27 @@ __osm_trap_get_key(
 
 /**********************************************************************
  **********************************************************************/
+static int
+__print_num_received(
+  IN uint32_t num_received )
+{
+  uint32_t i;
+
+  /* Series is 10, 20, 50, 100, 200, 500, ... */
+  i = num_received;
+  while (i >= 10) {
+    if (i % 10)
+      break;
+    i = i / 10;
+  }
+  if (i == 1 || i == 2 || i == 5)
+    return 1;
+  else
+    return 0;
+}
+
+/**********************************************************************
+ **********************************************************************/
 static void
 __osm_trap_rcv_process_request(
   IN osm_trap_rcv_t* const p_rcv,
@@ -494,10 +514,11 @@ __osm_trap_rcv_process_request(
     /* Now we know how many times it provided this trap */
     if (num_received > 10)
     {
-      osm_log( p_rcv->p_log, OSM_LOG_ERROR,
-               "__osm_trap_rcv_process_request: ERR 3804: "
-               "Received trap %u times consecutively\n",
-               num_received);
+      if (__print_num_received(num_received))
+        osm_log( p_rcv->p_log, OSM_LOG_ERROR,
+                 "__osm_trap_rcv_process_request: ERR 3804: "
+                 "Received trap %u times consecutively\n",
+                 num_received);
       /*
        * If the trap provides info about a bad port
        * we mark it as unhealthy.
@@ -569,10 +590,11 @@ __osm_trap_rcv_process_request(
     /* If was already registered do nothing more */
     if ( num_received > 10 && run_heavy_sweep == FALSE )
     {
-      osm_log( p_rcv->p_log, OSM_LOG_VERBOSE,
-               "__osm_trap_rcv_process_request: "
-               "Continuously received this trap %u times. Ignoring it\n",
-               num_received);
+      if (__print_num_received(num_received))
+        osm_log( p_rcv->p_log, OSM_LOG_VERBOSE,
+                 "__osm_trap_rcv_process_request: "
+                 "Continuously received this trap %u times. Ignoring it\n",
+                 num_received);
       goto Exit;
     }
   }







More information about the general mailing list