mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-28 10:08:23 +00:00
Automatic merge from submit-queue (batch tested with PRs 64645, 66832). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Detect if GCE PD udev link is wrong and try to correct it **What this PR does / why we need it**: udev can miss scsi events and not update device links properly when disks are detached and reattached to the same node in a different order. This PR workarounds the issue by comparing the udev link name, which is the PD disk name, with the scsi disk serial number returned from scsi_id, and prevents mounting of the disk if the link is wrong. It will also run `udevadm trigger` on the disk to try to correct the bad link. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: **Release note**: ```release-note This fix prevents a GCE PD volume from being mounted if the udev device link is stale and tries to correct the link. ```
79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
package(default_visibility = ["//visibility:public"])
|
|
|
|
load(
|
|
"@io_bazel_rules_go//go:def.bzl",
|
|
"go_library",
|
|
"go_test",
|
|
)
|
|
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
"attacher.go",
|
|
"doc.go",
|
|
"gce_pd.go",
|
|
"gce_pd_block.go",
|
|
"gce_util.go",
|
|
],
|
|
importpath = "k8s.io/kubernetes/pkg/volume/gce_pd",
|
|
deps = [
|
|
"//pkg/cloudprovider:go_default_library",
|
|
"//pkg/cloudprovider/providers/gce:go_default_library",
|
|
"//pkg/features:go_default_library",
|
|
"//pkg/kubelet/apis:go_default_library",
|
|
"//pkg/util/file:go_default_library",
|
|
"//pkg/util/mount:go_default_library",
|
|
"//pkg/util/strings:go_default_library",
|
|
"//pkg/volume:go_default_library",
|
|
"//pkg/volume/util:go_default_library",
|
|
"//pkg/volume/util/volumepathhandler:go_default_library",
|
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
"//vendor/github.com/golang/glog:go_default_library",
|
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
|
],
|
|
)
|
|
|
|
go_test(
|
|
name = "go_default_test",
|
|
srcs = [
|
|
"attacher_test.go",
|
|
"gce_pd_block_test.go",
|
|
"gce_pd_test.go",
|
|
"gce_util_test.go",
|
|
],
|
|
embed = [":go_default_library"],
|
|
deps = [
|
|
"//pkg/kubelet/apis:go_default_library",
|
|
"//pkg/util/mount:go_default_library",
|
|
"//pkg/volume:go_default_library",
|
|
"//pkg/volume/testing:go_default_library",
|
|
"//pkg/volume/util:go_default_library",
|
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
|
|
"//staging/src/k8s.io/client-go/util/testing:go_default_library",
|
|
"//vendor/github.com/golang/glog:go_default_library",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "package-srcs",
|
|
srcs = glob(["**"]),
|
|
tags = ["automanaged"],
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "all-srcs",
|
|
srcs = [":package-srcs"],
|
|
tags = ["automanaged"],
|
|
)
|