Properly detect that bpffs has been mounted

This commit is contained in:
Ole Markus With 2020-02-20 20:21:45 +01:00
parent 249beba657
commit f2f29d92d6
3 changed files with 10 additions and 8 deletions

1
go.mod
View File

@ -124,6 +124,7 @@ require (
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371 golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371
google.golang.org/api v0.17.0 google.golang.org/api v0.17.0
gopkg.in/gcfg.v1 v1.2.0 gopkg.in/gcfg.v1 v1.2.0

View File

@ -72,6 +72,7 @@ go_library(
"//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library", "//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library",
"//vendor/github.com/blang/semver:go_default_library", "//vendor/github.com/blang/semver:go_default_library",
"//vendor/golang.org/x/sys/unix:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",

View File

@ -18,9 +18,9 @@ package model
import ( import (
"fmt" "fmt"
"os"
"path/filepath" "path/filepath"
"golang.org/x/sys/unix"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks" "k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
) )
@ -70,15 +70,15 @@ func (b *NetworkBuilder) Build(c *fi.ModelBuilderContext) error {
if networking.Cilium != nil { if networking.Cilium != nil {
// systemd v238 includes the bpffs mount by default; and gives an error "has a bad unit file setting" if we try to mount it again (see mount_point_is_api) // systemd v238 includes the bpffs mount by default; and gives an error "has a bad unit file setting" if we try to mount it again (see mount_point_is_api)
var alreadyMounted bool var alreadyMounted bool
_, err := os.Stat("/sys/fs/bpf") // bpffs magic number
magic := uint32(0xCAFE4A11)
var fsdata unix.Statfs_t
err := unix.Statfs("/sys/fs/bpf", &fsdata)
if err != nil { if err != nil {
if os.IsNotExist(err) { alreadyMounted = false
alreadyMounted = false
} else {
return fmt.Errorf("error checking for /sys/fs/bpf: %v", err)
}
} else { } else {
alreadyMounted = true alreadyMounted = int32(magic) == int32(fsdata.Type)
} }
if !alreadyMounted { if !alreadyMounted {