[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