* [PATCH] opensm: osm_subnet.c: Updated patch to add error-reporting to the parsing of opensm.conf
@ 2012-02-29 18:54 Mike Heinz
[not found] ` <4C2744E8AD2982428C5BFE523DF8CDCB5CD5B8B5D0-amwN6d8PyQWXx9kJd3VG2h2eb7JE58TQ@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Mike Heinz @ 2012-02-29 18:54 UTC (permalink / raw)
To: alexne-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Hal Rosenstock, Todd Rimmer
I've recently seen two different users on different fabrics make the same
mistake: They made a syntax error in their opensm.conf file and then couldn't
figure out why their changes didn't take effect.
Looking at the code that parses the opensm.conf file, it appears to treat any
line it cannot parse as a comment and silently passes over it.
This patch modifies the parse logic as follows:
1. Truncate the line at the first '#' character.
2. If the result is blank, skip to the next line.
3. If the first token in the line can be matched against a known token,
process it as usual.
4. If the token cannot be matched against a known token, log an error message.
The result is that if, for example, the user typed "force_link_speed=5" the
system log will read:
Feb 24 14:57:09 ifs001 OpenSM[17517]: OpenSM 3.3.13
Feb 24 14:57:09 ifs001 OpenSM[17517]: Entering DISCOVERING state
Feb 24 14:57:09 ifs001 OpenSM[17517]: Unrecognized token: "force_link_speed=5"
Feb 24 14:57:09 ifs001 opensm[17517]: Entering MASTER state
Feb 24 14:57:09 ifs001 opensm[17517]: SUBNET UP
.
.
.
In addition, error messages will also be reported to the command line and
the opensm logfile. For example:
[root@ifs001]# opensm
-------------------------------------------------
OpenSM 3.3.13
Reading Cached Option File: /etc/opensm/opensm.conf
Unrecognized token: "1`243561"
Command Line Arguments:
Log File: /var/log/opensm.log
-------------------------------------------------
OpenSM 3.3.13
Entering DISCOVERING state
Using default GUID 0x117500007918d2
Unrecognized token: "1`243561"
Entering MASTER state
SUBNET UP
.
.
.
Signed-off-by: Michael Heinz <michael.heinz-h88ZbnxC6KDQT0dZR+AlfA@public.gmane.org>
---
diff --git a/opensm/osm_subnet.c b/opensm/osm_subnet.c
index 1b30e1e..faccea2 100644
--- a/opensm/osm_subnet.c
+++ b/opensm/osm_subnet.c
@@ -1264,6 +1264,13 @@ int osm_subn_parse_conf_file(char *file_name, osm_subn_opt_t * p_opts)
p_opts->file_opts->file_opts = NULL;
while (fgets(line, 1023, opts_file) != NULL) {
+ char *pound_sign = strchr(line,'#');
+ int token_matched = 0;
+
+ /* Truncate any comments. */
+ if (pound_sign)
+ *pound_sign = '\0';
+
/* get the first token */
p_key = strtok_r(line, " \t\n", &p_val);
if (!p_key)
@@ -1275,6 +1282,7 @@ int osm_subn_parse_conf_file(char *file_name, osm_subn_opt_t * p_opts)
if (strcmp(r->name, p_key))
continue;
+ token_matched = 1;
p_field1 = (void *)p_opts->file_opts + r->opt_offset;
p_field2 = (void *)p_opts + r->opt_offset;
/* don't call setup function first time */
@@ -1282,6 +1290,13 @@ int osm_subn_parse_conf_file(char *file_name, osm_subn_opt_t * p_opts)
NULL);
break;
}
+
+ if (!token_matched) {
+ char buf[256];
+ snprintf(buf,sizeof(buf),"Unrecognized token: \"%s\"",p_key);
+ cl_log_event("OpenSM", CL_LOG_ERROR, buf, NULL, 0);
+ log_report("%s\n",buf);
+ }
}
fclose(opts_file);
@@ -1324,6 +1339,13 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * p_subn)
&p_opts->file_opts->qos_rtr_options);
while (fgets(line, 1023, opts_file) != NULL) {
+ char *pound_sign = strchr(line,'#');
+ int token_matched = 0;
+
+ /* Truncate any comments. */
+ if (pound_sign)
+ *pound_sign = '\0';
+
/* get the first token */
p_key = strtok_r(line, " \t\n", &p_val);
if (!p_key)
@@ -1332,7 +1354,12 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * p_subn)
p_val = clean_val(p_val);
for (r = opt_tbl; r->name; r++) {
- if (!r->can_update || strcmp(r->name, p_key))
+ if (strcmp(r->name, p_key))
+ continue;
+
+ token_matched = 1;
+
+ if (!r->can_update)
continue;
p_field1 = (void *)p_opts->file_opts + r->opt_offset;
@@ -1341,6 +1368,13 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * p_subn)
r->setup_fn);
break;
}
+
+ if (!token_matched) {
+ char buf[256];
+ snprintf(buf,sizeof(buf),"Unrecognized token: \"%s\"",p_key);
+ cl_log_event("OpenSM", CL_LOG_ERROR, buf, NULL, 0);
+ log_report("%s\n",buf);
+ }
}
fclose(opts_file);
This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] opensm: osm_subnet.c: Updated patch to add error-reporting to the parsing of opensm.conf
[not found] ` <4C2744E8AD2982428C5BFE523DF8CDCB5CD5B8B5D0-amwN6d8PyQWXx9kJd3VG2h2eb7JE58TQ@public.gmane.org>
@ 2012-03-05 16:27 ` Heinz, Michael William
2012-03-18 12:57 ` Alex Netes
1 sibling, 0 replies; 3+ messages in thread
From: Heinz, Michael William @ 2012-03-05 16:27 UTC (permalink / raw)
To: Mike Heinz, alexne-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Hal Rosenstock, Todd Rimmer
Alex - is this patch acceptable? My connectivity has been knocked for a loop by the transition to Intel and I'm not sure if you received this or not.
-----Original Message-----
From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On Behalf Of Mike Heinz
Sent: Wednesday, February 29, 2012 1:54 PM
To: alexne-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org; linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Hal Rosenstock; Todd Rimmer
Subject: [PATCH] opensm: osm_subnet.c: Updated patch to add error-reporting to the parsing of opensm.conf
I've recently seen two different users on different fabrics make the same
mistake: They made a syntax error in their opensm.conf file and then couldn't figure out why their changes didn't take effect.
Looking at the code that parses the opensm.conf file, it appears to treat any line it cannot parse as a comment and silently passes over it.
This patch modifies the parse logic as follows:
1. Truncate the line at the first '#' character.
2. If the result is blank, skip to the next line.
3. If the first token in the line can be matched against a known token,
process it as usual.
4. If the token cannot be matched against a known token, log an error message.
The result is that if, for example, the user typed "force_link_speed=5" the system log will read:
Feb 24 14:57:09 ifs001 OpenSM[17517]: OpenSM 3.3.13 Feb 24 14:57:09 ifs001 OpenSM[17517]: Entering DISCOVERING state Feb 24 14:57:09 ifs001 OpenSM[17517]: Unrecognized token: "force_link_speed=5"
Feb 24 14:57:09 ifs001 opensm[17517]: Entering MASTER state Feb 24 14:57:09 ifs001 opensm[17517]: SUBNET UP .
.
.
In addition, error messages will also be reported to the command line and the opensm logfile. For example:
[root@ifs001]# opensm
-------------------------------------------------
OpenSM 3.3.13
Reading Cached Option File: /etc/opensm/opensm.conf Unrecognized token: "1`243561"
Command Line Arguments:
Log File: /var/log/opensm.log
-------------------------------------------------
OpenSM 3.3.13
Entering DISCOVERING state
Using default GUID 0x117500007918d2
Unrecognized token: "1`243561"
Entering MASTER state
SUBNET UP
.
.
.
Signed-off-by: Michael Heinz <michael.heinz-h88ZbnxC6KDQT0dZR+AlfA@public.gmane.org>
---
diff --git a/opensm/osm_subnet.c b/opensm/osm_subnet.c index 1b30e1e..faccea2 100644
--- a/opensm/osm_subnet.c
+++ b/opensm/osm_subnet.c
@@ -1264,6 +1264,13 @@ int osm_subn_parse_conf_file(char *file_name, osm_subn_opt_t * p_opts)
p_opts->file_opts->file_opts = NULL;
while (fgets(line, 1023, opts_file) != NULL) {
+ char *pound_sign = strchr(line,'#');
+ int token_matched = 0;
+
+ /* Truncate any comments. */
+ if (pound_sign)
+ *pound_sign = '\0';
+
/* get the first token */
p_key = strtok_r(line, " \t\n", &p_val);
if (!p_key)
@@ -1275,6 +1282,7 @@ int osm_subn_parse_conf_file(char *file_name, osm_subn_opt_t * p_opts)
if (strcmp(r->name, p_key))
continue;
+ token_matched = 1;
p_field1 = (void *)p_opts->file_opts + r->opt_offset;
p_field2 = (void *)p_opts + r->opt_offset;
/* don't call setup function first time */ @@ -1282,6 +1290,13 @@ int osm_subn_parse_conf_file(char *file_name, osm_subn_opt_t * p_opts)
NULL);
break;
}
+
+ if (!token_matched) {
+ char buf[256];
+ snprintf(buf,sizeof(buf),"Unrecognized token: \"%s\"",p_key);
+ cl_log_event("OpenSM", CL_LOG_ERROR, buf, NULL, 0);
+ log_report("%s\n",buf);
+ }
}
fclose(opts_file);
@@ -1324,6 +1339,13 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * p_subn)
&p_opts->file_opts->qos_rtr_options);
while (fgets(line, 1023, opts_file) != NULL) {
+ char *pound_sign = strchr(line,'#');
+ int token_matched = 0;
+
+ /* Truncate any comments. */
+ if (pound_sign)
+ *pound_sign = '\0';
+
/* get the first token */
p_key = strtok_r(line, " \t\n", &p_val);
if (!p_key)
@@ -1332,7 +1354,12 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * p_subn)
p_val = clean_val(p_val);
for (r = opt_tbl; r->name; r++) {
- if (!r->can_update || strcmp(r->name, p_key))
+ if (strcmp(r->name, p_key))
+ continue;
+
+ token_matched = 1;
+
+ if (!r->can_update)
continue;
p_field1 = (void *)p_opts->file_opts + r->opt_offset; @@ -1341,6 +1368,13 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * p_subn)
r->setup_fn);
break;
}
+
+ if (!token_matched) {
+ char buf[256];
+ snprintf(buf,sizeof(buf),"Unrecognized token: \"%s\"",p_key);
+ cl_log_event("OpenSM", CL_LOG_ERROR, buf, NULL, 0);
+ log_report("%s\n",buf);
+ }
}
fclose(opts_file);
This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] opensm: osm_subnet.c: Updated patch to add error-reporting to the parsing of opensm.conf
[not found] ` <4C2744E8AD2982428C5BFE523DF8CDCB5CD5B8B5D0-amwN6d8PyQWXx9kJd3VG2h2eb7JE58TQ@public.gmane.org>
2012-03-05 16:27 ` Heinz, Michael William
@ 2012-03-18 12:57 ` Alex Netes
1 sibling, 0 replies; 3+ messages in thread
From: Alex Netes @ 2012-03-18 12:57 UTC (permalink / raw)
To: Mike Heinz
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Hal Rosenstock, Todd Rimmer
On 12:54 Wed 29 Feb , Mike Heinz wrote:
> I've recently seen two different users on different fabrics make the same
> mistake: They made a syntax error in their opensm.conf file and then couldn't
> figure out why their changes didn't take effect.
>
> Looking at the code that parses the opensm.conf file, it appears to treat any
> line it cannot parse as a comment and silently passes over it.
>
> This patch modifies the parse logic as follows:
>
> 1. Truncate the line at the first '#' character.
> 2. If the result is blank, skip to the next line.
> 3. If the first token in the line can be matched against a known token,
> process it as usual.
> 4. If the token cannot be matched against a known token, log an error message.
>
> The result is that if, for example, the user typed "force_link_speed=5" the
> system log will read:
>
> Feb 24 14:57:09 ifs001 OpenSM[17517]: OpenSM 3.3.13
> Feb 24 14:57:09 ifs001 OpenSM[17517]: Entering DISCOVERING state
> Feb 24 14:57:09 ifs001 OpenSM[17517]: Unrecognized token: "force_link_speed=5"
> Feb 24 14:57:09 ifs001 opensm[17517]: Entering MASTER state
> Feb 24 14:57:09 ifs001 opensm[17517]: SUBNET UP
> .
> .
> .
>
> In addition, error messages will also be reported to the command line and
> the opensm logfile. For example:
>
> [root@ifs001]# opensm
> -------------------------------------------------
> OpenSM 3.3.13
> Reading Cached Option File: /etc/opensm/opensm.conf
> Unrecognized token: "1`243561"
> Command Line Arguments:
> Log File: /var/log/opensm.log
> -------------------------------------------------
> OpenSM 3.3.13
>
> Entering DISCOVERING state
>
> Using default GUID 0x117500007918d2
> Unrecognized token: "1`243561"
> Entering MASTER state
>
> SUBNET UP
> .
> .
> .
>
> Signed-off-by: Michael Heinz <michael.heinz-h88ZbnxC6KDQT0dZR+AlfA@public.gmane.org>
> ---
Applied. Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-03-18 12:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-29 18:54 [PATCH] opensm: osm_subnet.c: Updated patch to add error-reporting to the parsing of opensm.conf Mike Heinz
[not found] ` <4C2744E8AD2982428C5BFE523DF8CDCB5CD5B8B5D0-amwN6d8PyQWXx9kJd3VG2h2eb7JE58TQ@public.gmane.org>
2012-03-05 16:27 ` Heinz, Michael William
2012-03-18 12:57 ` Alex Netes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox