Fix fibrechannel_linux for ppc64le - #3769
Open
hamzy wants to merge 1 commit into
Open
Conversation
prb112
reviewed
Aug 2, 2026
| // Note: `procfs` does not guarantee a safe dereference for these counters. | ||
| // A disabled host returns no statistics counters. | ||
| if host.PortState == nil || *host.PortState == "Unknown" { | ||
| // Note: These are not guaranteed to exist in the filesystem |
There was a problem hiding this comment.
This defense addition makes sense to me.
|
Related to a bug found at https://redhat.atlassian.net/browse/OCPBUGS-100376 |
hamzy
force-pushed
the
fix-collector-fibrechannel_linux
branch
3 times, most recently
from
August 4, 2026 00:23
e4442c4 to
597d541
Compare
hamzy
force-pushed
the
fix-collector-fibrechannel_linux
branch
from
August 4, 2026 12:17
597d541 to
ae10239
Compare
hamzy
force-pushed
the
fix-collector-fibrechannel_linux
branch
from
August 4, 2026 13:27
ae10239 to
32870c9
Compare
Seen on a master node: ``` panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x106cefa4] goroutine 81 [running]: github.com/prometheus/node_exporter/collector.(*fibrechannelCollector).Update(0x7e28c1ae20f0, 0x7e28c1826770) /go/src/github.com/prometheus/node_exporter/collector/fibrechannel_linux.go:133 +0x604 sh-5.1# ls -l /host/sys/class/fc_host/ total 0 lrwxrwxrwx. 1 root root 0 Jul 30 20:42 host1 -> ../../devices/vio/30000003/host1/fc_host/host1 lrwxrwxrwx. 1 root root 0 Jul 30 20:42 host2 -> ../../devices/vio/30000005/host2/fc_host/host2 sh-5.1# ls -l /host/sys/class/fc_host/host1/ total 0 -rw-r--r--. 1 root root 65536 Jul 30 20:09 dev_loss_tmo lrwxrwxrwx. 1 root root 0 Jul 30 20:42 device -> ../../../host1 -r--r--r--. 1 root root 65536 Jul 30 20:09 fabric_name --w-------. 1 root root 65536 Jul 30 20:42 issue_lip -r--r--r--. 1 root root 65536 Jul 30 20:42 maxframe_size -r--r--r--. 1 root root 65536 Jul 30 20:09 node_name -r--r--r--. 1 root root 65536 Jul 30 20:09 port_id -r--r--r--. 1 root root 65536 Jul 30 20:42 port_name -r--r--r--. 1 root root 65536 Jul 30 20:09 port_state -r--r--r--. 1 root root 65536 Jul 30 20:09 port_type drwxr-xr-x. 2 root root 0 Jul 30 20:42 power -r--r--r--. 1 root root 65536 Jul 30 20:09 speed lrwxrwxrwx. 1 root root 0 Jul 30 20:42 subsystem -> ../../../../../../class/fc_host -r--r--r--. 1 root root 65536 Jul 30 20:09 supported_classes -rw-r--r--. 1 root root 65536 Jul 30 20:42 tgtid_bind_type -rw-r--r--. 1 root root 65536 Jul 30 20:42 uevent ``` Since many filenames for counters are not guaranteed to exist in VMs, allocate if not present. Signed-off-by: Mark Hamzy <hamzy@us.ibm.com>
hamzy
force-pushed
the
fix-collector-fibrechannel_linux
branch
from
August 4, 2026 15:47
32870c9 to
d00fb6f
Compare
| # TYPE node_fibrechannel_info gauge | ||
| node_fibrechannel_info{dev_loss_tmo="",fabric_name="",fc_host="host1",port_id="",port_name="",port_state="Online",port_type="",speed="8 Gbit",supported_classes="",supported_speeds="",symbolic_name=""} 1 | ||
| node_fibrechannel_info{dev_loss_tmo="30",fabric_name="0",fc_host="host0",port_id="000002",port_name="1000e0071bce95f2",port_state="Online",port_type="Point-To-Point (direct nport connection)",speed="16 Gbit",supported_classes="Class 3",supported_speeds="4 Gbit, 8 Gbit, 16 Gbit",symbolic_name="Emulex SN1100E2P FV12.4.270.3 DV12.4.0.0. HN:gotest. OS:Linux"} 1 | ||
| node_fibrechannel_info{dev_loss_tmo="30",fabric_name="0",fc_host="host2",port_id="000003",port_name="4000e0071bce95f2",port_state="Online",port_type="Point-To-Point (direct nport connection)",speed="16 Gbit",supported_classes="Class 3",supported_speeds="4 Gbit, 8 Gbit, 16 Gbit",symbolic_name="Emulex SN1100E2P FV12.4.270.3 DV12.4.0.0. HN:gotest. OS:Linux"} 1 |
Member
There was a problem hiding this comment.
this info metric isn't correct (most of the label values are empty)
Author
There was a problem hiding this comment.
Isn't that the whole point of this PR?
Member
There was a problem hiding this comment.
The expected output is
node_fibrechannel_info{dev_loss_tmo="",fabric_name="",fc_host="host1",port_id="",port_name="",port_state="Online",port_type="",speed="8 Gbit",supported_classes="",supported_speeds="",symbolic_name=""} 1
node_fibrechannel_info{dev_loss_tmo="",fabric_name="",fc_host="host2",port_id="",port_name="",port_state="Online",port_type="",speed="",supported_classes="",supported_speeds="",symbolic_name=""} 1
node_fibrechannel_info{dev_loss_tmo="30",fabric_name="0",fc_host="host0",port_id="000002",port_name="1000e0071bce95f2",port_state="Online",port_type="Point-To-Point (direct nport connection)",speed="16 Gbit",supported_classes="Class 3",supported_speeds="4 Gbit, 8 Gbit, 16 Gbit",symbolic_name="Emulex SN1100E2P FV12.4.270.3 DV12.4.0.0. HN:gotest. OS:Linux"} 1
instead of
node_fibrechannel_info{dev_loss_tmo="",fabric_name="",fc_host="host1",port_id="",port_name="",port_state="Online",port_type="",speed="8 Gbit",supported_classes="",supported_speeds="",symbolic_name=""} 1
node_fibrechannel_info{dev_loss_tmo="30",fabric_name="0",fc_host="host0",port_id="000002",port_name="1000e0071bce95f2",port_state="Online",port_type="Point-To-Point (direct nport connection)",speed="16 Gbit",supported_classes="Class 3",supported_speeds="4 Gbit, 8 Gbit, 16 Gbit",symbolic_name="Emulex SN1100E2P FV12.4.270.3 DV12.4.0.0. HN:gotest. OS:Linux"} 1
node_fibrechannel_info{dev_loss_tmo="30",fabric_name="0",fc_host="host2",port_id="000003",port_name="4000e0071bce95f2",port_state="Online",port_type="Point-To-Point (direct nport connection)",speed="16 Gbit",supported_classes="Class 3",supported_speeds="4 Gbit, 8 Gbit, 16 Gbit",symbolic_name="Emulex SN1100E2P FV12.4.270.3 DV12.4.0.0. HN:gotest. OS:Linux"} 1
Notice how the host2 line is between host1 and host0 and how most of its labels are empty.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Seen on a master node:
Since many filenames for counters are not guaranteed to exist in VMs, allocate if not present.