[ovs-dev] [PATCHv2] cfm: Count flaps when logging is disabled

Joe Stringer joestringer at nicira.com
Wed Nov 6 18:36:17 UTC 2013


Previously, the flap count logic for CFM was dependent on the state of
the logging facility. This patch ensures flaps are always counted when
there is a transition between non-fault and fault (and vice versa).

Found by inspection.

Signed-off-by: Joe Stringer <joestringer at nicira.com>
---
v2: Don't modify cfm->fault logic

After digging in a little further, I think that the only trouble was the
above issue. With bools backed by ints in C, the other issue I was
concerned about does not exist. The "old_cfm_fault != cfm->fault" logic
checks if there has been a change in fault condition, and the existing
flap check detects the flap transitions correctly.
---
 lib/cfm.c |   22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/lib/cfm.c b/lib/cfm.c
index d256a5f..9c65b34 100644
--- a/lib/cfm.c
+++ b/lib/cfm.c
@@ -480,16 +480,18 @@ cfm_run(struct cfm *cfm) OVS_EXCLUDED(mutex)
             cfm->fault |= CFM_FAULT_RECV;
         }
 
-        if (old_cfm_fault != cfm->fault && !VLOG_DROP_INFO(&rl)) {
-            struct ds ds = DS_EMPTY_INITIALIZER;
-
-            ds_put_cstr(&ds, "from [");
-            ds_put_cfm_fault(&ds, old_cfm_fault);
-            ds_put_cstr(&ds, "] to [");
-            ds_put_cfm_fault(&ds, cfm->fault);
-            ds_put_char(&ds, ']');
-            VLOG_INFO("%s: CFM faults changed %s.", cfm->name, ds_cstr(&ds));
-            ds_destroy(&ds);
+        if (old_cfm_fault != cfm->fault) {
+            if (!VLOG_DROP_INFO(&rl)) {
+                struct ds ds = DS_EMPTY_INITIALIZER;
+
+                ds_put_cstr(&ds, "from [");
+                ds_put_cfm_fault(&ds, old_cfm_fault);
+                ds_put_cstr(&ds, "] to [");
+                ds_put_cfm_fault(&ds, cfm->fault);
+                ds_put_char(&ds, ']');
+                VLOG_INFO("%s: CFM faults changed %s.", cfm->name, ds_cstr(&ds));
+                ds_destroy(&ds);
+            }
 
             /* If there is a flap, increments the counter. */
             if (old_cfm_fault == false || cfm->fault == false) {
-- 
1.7.9.5




More information about the dev mailing list