[ofa-general] [PATCH] infiniabd-diags/scripts: fix perfquery usage
Sasha Khapyorsky
sashak at voltaire.com
Wed Dec 12 15:47:37 PST 2007
It similar to ibcheckerrors fix - don't use 'all port' option for CA
ports querying and reset.
Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
---
infiniband-diags/scripts/ibchecknet.in | 46 ++++++++++-----------------
infiniband-diags/scripts/ibclearcounters.in | 6 +---
infiniband-diags/scripts/ibclearerrors.in | 4 +--
infiniband-diags/scripts/ibdatacounters.in | 41 +++++++----------------
4 files changed, 32 insertions(+), 65 deletions(-)
diff --git a/infiniband-diags/scripts/ibchecknet.in b/infiniband-diags/scripts/ibchecknet.in
index b6e0945..ebcf22d 100644
--- a/infiniband-diags/scripts/ibchecknet.in
+++ b/infiniband-diags/scripts/ibchecknet.in
@@ -72,16 +72,16 @@ BEGIN {
ne=0
pe=0
}
-function check_node(lid)
+function check_node(lid, port)
{
- nodechecked=1
- if (system("'$IBPATH'/ibchecknode'"$ca_info"' '$gflags' '$verbose' " lid)) {
+ if (system("'$IBPATH'/ibchecknode '"$ca_info"' '$gflags' '$verbose' " lid)) {
ne++
- badnode=1
- return
+ print "\n# " ntype ": nodeguid 0x" nodeguid " failed"
+ return 1;
}
- if (system("'$IBPATH'/ibcheckerrs'"$ca_info"' '$gflags' '$verbose' " lid " 255"))
- nodeerr=1;
+ if (system("'$IBPATH'/ibcheckerrs '"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port))
+ return 2;
+ return 0;
}
/^Ca/ || /^Switch/ || /^Rt/ {
@@ -90,30 +90,27 @@ function check_node(lid)
if ('$v' || ntype != "Switch")
print "\n# Checking " ntype ": nodeguid 0x" nodeguid
- nodechecked=0
- nodeerr=0
- badnode=0
+ err = 0;
if (ntype != "Switch")
next
lid = substr($0, index($0, "port 0 lid ") + 11)
lid = substr(lid, 1, index(lid, " ") - 1)
- check_node(lid)
+ err = check_node(lid, 255)
}
/^\[/ {
nports++
port = $1
- if (!nodechecked) {
- lid = substr($0, index($0, " lid ") + 5)
- lid = substr(lid, 1, index(lid, " ") - 1)
- check_node(lid)
- }
- if (badnode) {
- print "\n# " ntype ": nodeguid 0x" nodeguid " failed"
- next
- }
sub("\\(.*\\)", "", port)
gsub("[\\[\\]]", "", port)
+ if (ntype != "Switch") {
+ lid = substr($0, index($0, " lid ") + 5)
+ lid = substr(lid, 1, index(lid, " ") - 1)
+ if (check_node(lid, port) == 2)
+ pcnterr++;
+ } else if (err &&
+ system("'$IBPATH'/ibcheckerrs '"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port))
+ pcnterr++;
if (system("'$IBPATH'/ibcheckport'"$ca_info"' '$gflags' '$verbose' " lid " " port)) {
if (!'$v' && oldlid != lid) {
print "# Checked " ntype ": nodeguid 0x" nodeguid " with failure"
@@ -121,15 +118,6 @@ function check_node(lid)
}
pe++;
}
-
- if (nodeerr)
- if (system("'$IBPATH'/ibcheckerrs'"$ca_info"' '$gflags' '$verbose' " lid " " port)) {
- if (!'$v' && oldlid != lid) {
- print "# Checked " ntype ": nodeguid 0x" nodeguid " with failure"
- oldlid = lid
- }
- pcnterr++;
- }
}
/^ib/ {print $0; next}
diff --git a/infiniband-diags/scripts/ibclearcounters.in b/infiniband-diags/scripts/ibclearcounters.in
index 0413d86..5b4e60c 100644
--- a/infiniband-diags/scripts/ibclearcounters.in
+++ b/infiniband-diags/scripts/ibclearcounters.in
@@ -18,7 +18,6 @@ trap user_abort SIGINT
gflags=""
verbose=""
v=0
-oldlid=""
topofile=""
ca_info=""
@@ -67,14 +66,12 @@ echo "$text" | awk '
function clear_counters(lid)
{
- nodecleared=1
if (system("'$IBPATH'/perfquery'"$ca_info"' '$gflags' -R -a " lid))
nodeerr++
}
function clear_port_counters(lid, port)
{
- nodecleared=1
if (system("'$IBPATH'/perfquery'"$ca_info"' '$gflags' -R " lid " " port))
nodeerr++
}
@@ -82,7 +79,6 @@ function clear_port_counters(lid, port)
/^Ca/ || /^Switch/ || /^Rt/ {
nnodes++
ntype=$1; nodeguid=substr($3, 4, 16); ports=$2
- nodecleared=0
if (ntype != "Switch")
next
@@ -95,7 +91,7 @@ function clear_port_counters(lid, port)
port = $1
sub("\\(.*\\)", "", port)
gsub("[\\[\\]]", "", port)
- if (!nodecleared) {
+ if (ntype != "Switch") {
lid = substr($0, index($0, " lid ") + 5)
lid = substr(lid, 1, index(lid, " ") - 1)
clear_port_counters(lid, port)
diff --git a/infiniband-diags/scripts/ibclearerrors.in b/infiniband-diags/scripts/ibclearerrors.in
index 930efa6..edf93f5 100644
--- a/infiniband-diags/scripts/ibclearerrors.in
+++ b/infiniband-diags/scripts/ibclearerrors.in
@@ -67,7 +67,6 @@ echo "$text" | awk '
function clear_errors(lid, port)
{
- nodecleared=1
if (system("'$IBPATH'/perfquery'"$ca_info"' '$gflags' -R " lid " " port " 0x0fff"))
nodeerr++
}
@@ -75,7 +74,6 @@ function clear_errors(lid, port)
/^Ca/ || /^Switch/ || /^Rt/ {
nnodes++
ntype=$1; nodeguid=substr($3, 4, 16); ports=$2
- nodecleared=0
if (ntype != "Switch")
next
@@ -88,7 +86,7 @@ function clear_errors(lid, port)
port = $1
sub("\\(.*\\)", "", port)
gsub("[\\[\\]]", "", port)
- if (!nodecleared) {
+ if (ntype != "Switch") {
lid = substr($0, index($0, " lid ") + 5)
lid = substr(lid, 1, index(lid, " ") - 1)
clear_errors(lid, port)
diff --git a/infiniband-diags/scripts/ibdatacounters.in b/infiniband-diags/scripts/ibdatacounters.in
index 7f0df1c..fa2455b 100644
--- a/infiniband-diags/scripts/ibdatacounters.in
+++ b/infiniband-diags/scripts/ibdatacounters.in
@@ -21,7 +21,6 @@ brief=""
v=0
ntype=""
nodeguid=""
-oldlid=""
topofile=""
ca_info=""
@@ -79,16 +78,14 @@ echo "$text" | awk '
BEGIN {
ne=0
}
-function check_node(lid)
+function check_node(lid, port)
{
- nodechecked=1
- if (system("'$IBPATH'/ibchecknode'"$ca_info"' '$gflags' '$verbose' " lid)) {
+ if (system("'$IBPATH'/ibchecknode '"$ca_info"' '$gflags' '$verbose' " lid)) {
ne++
- badnode=1
- return
+ print "\n# " ntype ": nodeguid 0x" nodeguid " failed"
+ return 1;
}
- if (system("'$IBPATH'/ibdatacounts'"$ca_info"' '$gflags' '$verbose' '$brief' " lid " 255"))
- nodeerr=1;
+ return system("'$IBPATH'/ibcheckerrs '"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port);
}
/^Ca/ || /^Switch/ || /^Rt/ {
@@ -97,37 +94,25 @@ function check_node(lid)
if ('$v')
print "\n# Checking " ntype ": nodeguid 0x" nodeguid
- nodechecked=0
- nodeerr=0
- badnode=0
+ err = 0;
if (ntype != "Switch")
next
lid = substr($0, index($0, "port 0 lid ") + 11)
lid = substr(lid, 1, index(lid, " ") - 1)
- check_node(lid)
+ err = check_node(lid, 255)
}
/^\[/ {
nports++
port = $1
- if (!nodechecked) {
- lid = substr($0, index($0, " lid ") + 5)
- lid = substr(lid, 1, index(lid, " ") - 1)
- check_node(lid)
- }
- if (badnode) {
- print "\n# " ntype ": nodeguid 0x" nodeguid " failed"
- next
- }
sub("\\(.*\\)", "", port)
gsub("[\\[\\]]", "", port)
- if (nodeerr)
- if (system("'$IBPATH'/ibdatacounts'"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port)) {
- if (!'$v' && oldlid != lid) {
- print "# Checked " ntype ": nodeguid 0x" nodeguid " with failure"
- oldlid = lid
- }
- }
+ if (ntype != "Switch") {
+ lid = substr($0, index($0, " lid ") + 5)
+ lid = substr(lid, 1, index(lid, " ") - 1)
+ check_node(lid, port)
+ } else if (err)
+ system("'$IBPATH'/ibdatacounts '"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port);
}
/^ib/ {print $0; next}
--
1.5.3.4.206.g58ba4
More information about the general
mailing list