dpif: Better log unusual errors in dpif_port_query_by_name().
authorBen Pfaff <blp@nicira.com>
Thu, 7 Apr 2011 21:43:14 +0000 (14:43 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 4 May 2011 17:27:21 +0000 (10:27 -0700)
Logging these unusual errors at a low level means that we can remove a
bit of higher-level code from ofproto.

The ofproto change also changes behavior for these error cases, from doing
nothing to removing the port, but I think that's OK.  I've never noticed
this log message.

lib/dpif.c

index 26d3dc2aea6363376c27b3e55d6c2d95ee613ffd..3786bb72d5c70285dcbfd4d6a2c6d878902d3974 100644 (file)
@@ -533,11 +533,14 @@ dpif_port_query_by_name(const struct dpif *dpif, const char *devname,
     } else {
         memset(port, 0, sizeof *port);
 
-        /* Log level is DBG here because all the current callers are interested
-         * in whether 'dpif' actually has a port 'devname', so that it's not an
-         * issue worth logging if it doesn't. */
-        VLOG_DBG_RL(&error_rl, "%s: failed to query port %s: %s",
-                    dpif_name(dpif), devname, strerror(error));
+        /* For ENOENT or ENODEV we use DBG level because the caller is probably
+         * interested in whether 'dpif' actually has a port 'devname', so that
+         * it's not an issue worth logging if it doesn't.  Other errors are
+         * uncommon and more likely to indicate a real problem. */
+        VLOG_RL(&error_rl,
+                error == ENOENT || error == ENODEV ? VLL_DBG : VLL_WARN,
+                "%s: failed to query port %s: %s",
+                dpif_name(dpif), devname, strerror(error));
     }
     return error;
 }