From 9f6fc576df4f96f8825a3f13bd9035f13a34640a Mon Sep 17 00:00:00 2001 From: Johannes 'fish' Ziemke Date: Fri, 3 Oct 2014 13:16:37 +0200 Subject: [PATCH] Look for slave_ and lower_ prefixed device in proc Looks like on newer kernels this is prefixed lower_ not slave_. --- collector/bonding.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/collector/bonding.go b/collector/bonding.go index 4f3f1d1b..09b1af32 100644 --- a/collector/bonding.go +++ b/collector/bonding.go @@ -5,6 +5,7 @@ package collector import ( "fmt" "io/ioutil" + "os" "path" "strings" @@ -78,7 +79,11 @@ func readBondingStats(root string) (status map[string][2]int, err error) { } sstat := [2]int{0, 0} for _, slave := range strings.Fields(string(slaves)) { - state, err := ioutil.ReadFile(path.Join(root, master, fmt.Sprintf("slave_%s", slave), "operstate")) + state, err := ioutil.ReadFile(path.Join(root, master, fmt.Sprintf("lower_%s", slave), "operstate")) + if os.IsNotExist(err) { + // some older? kernels use slave_ prefix + state, err = ioutil.ReadFile(path.Join(root, master, fmt.Sprintf("slave_%s", slave), "operstate")) + } if err != nil { return nil, err }