Skip to content

Commit 1cb3b96

Browse files
authored
Merge pull request #2941 from andyzhangx/reduce-get-disk-call
fix: reduce get disk calls in disk attach/detach on VMSS
2 parents 70910ee + 1a22f5b commit 1cb3b96

File tree

23 files changed

+157
-211
lines changed

23 files changed

+157
-211
lines changed

.github/workflows/static.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ jobs:
1515
- name: Run linter
1616
uses: golangci/golangci-lint-action@v6
1717
with:
18-
version: v1.60
19-
args: -E=gofmt,unused,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,durationcheck,errname,forbidigo -D=structcheck,typecheck,staticcheck --timeout=30m0s
18+
version: v1.64
19+
args: -E=gofmt,unused,ineffassign,revive,misspell,asciicheck,bodyclose,dogsled,durationcheck,errname,forbidigo -D=structcheck,typecheck,staticcheck --timeout=30m0s

go.mod

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module sigs.k8s.io/azuredisk-csi-driver
22

3-
go 1.23.3
3+
go 1.24
44

5-
toolchain go1.23.4
5+
toolchain go1.24.1
66

77
godebug winsymlink=0
88

@@ -43,9 +43,9 @@ require (
4343
k8s.io/mount-utils v0.32.3
4444
k8s.io/pod-security-admission v0.32.0
4545
k8s.io/utils v0.0.0-20241210054802-24370beab758
46-
sigs.k8s.io/cloud-provider-azure v1.29.1-0.20250305024401-4c771d529327
47-
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.9
48-
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.0
46+
sigs.k8s.io/cloud-provider-azure v1.29.1-0.20250316140635-7ef23be1356a
47+
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.12
48+
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.1
4949
sigs.k8s.io/yaml v1.4.0
5050
)
5151

@@ -63,7 +63,7 @@ require (
6363
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.1 // indirect
6464
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 // indirect
6565
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
66-
github.com/Azure/msi-dataplane v0.4.2 // indirect
66+
github.com/Azure/msi-dataplane v0.4.3 // indirect
6767
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.1 // indirect
6868
github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect
6969
github.com/Microsoft/go-winio v0.6.2 // indirect
@@ -131,7 +131,7 @@ require (
131131
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
132132
github.com/pkg/errors v0.9.1 // indirect
133133
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
134-
github.com/prometheus/client_golang v1.21.0 // indirect
134+
github.com/prometheus/client_golang v1.21.1 // indirect
135135
github.com/prometheus/client_model v0.6.1 // indirect
136136
github.com/prometheus/common v0.62.0 // indirect
137137
github.com/prometheus/procfs v0.15.1 // indirect
@@ -146,9 +146,9 @@ require (
146146
go.etcd.io/etcd/client/v3 v3.5.17 // indirect
147147
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
148148
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect
149-
go.opentelemetry.io/otel/exporters/prometheus v0.56.0 // indirect
149+
go.opentelemetry.io/otel/exporters/prometheus v0.57.0 // indirect
150150
go.opentelemetry.io/otel/metric v1.35.0 // indirect
151-
go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect
151+
go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect
152152
go.opentelemetry.io/otel/trace v1.35.0 // indirect
153153
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
154154
go.uber.org/multierr v1.11.0 // indirect

go.sum

+14-14
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK
4747
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
4848
github.com/Azure/go-autorest/autorest/mocks v0.4.3 h1:GXOGHjM7L2PF7tOuB0BawXMK5govrcUt3mF0qD0Qh30=
4949
github.com/Azure/go-autorest/autorest/mocks v0.4.3/go.mod h1:Z5HZUetq7pVWST7gWM79R9uGOyxEqyw76Oua5q9PhfQ=
50-
github.com/Azure/msi-dataplane v0.4.2 h1:4V44wRZ+sKmKgj64SKN5lMskt1qQBQSUiy6kazWvwKU=
51-
github.com/Azure/msi-dataplane v0.4.2/go.mod h1:yAfxdJyvcnvSDfSyOFV9qm4fReEQDl+nZLGeH2ZWSmw=
50+
github.com/Azure/msi-dataplane v0.4.3 h1:dWPWzY4b54tLIR9T1Q014Xxd/1DxOsMIp6EjRFAJlQY=
51+
github.com/Azure/msi-dataplane v0.4.3/go.mod h1:yAfxdJyvcnvSDfSyOFV9qm4fReEQDl+nZLGeH2ZWSmw=
5252
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=
5353
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
5454
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.1 h1:8BKxhZZLX/WosEeoCvWysmKUscfa9v8LIPEEU0JjE2o=
@@ -375,8 +375,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
375375
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
376376
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
377377
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
378-
github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA=
379-
github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
378+
github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
379+
github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
380380
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
381381
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
382382
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
@@ -461,14 +461,14 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0f
461461
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4=
462462
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
463463
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
464-
go.opentelemetry.io/otel/exporters/prometheus v0.56.0 h1:GnCIi0QyG0yy2MrJLzVrIM7laaJstj//flf1zEJCG+E=
465-
go.opentelemetry.io/otel/exporters/prometheus v0.56.0/go.mod h1:JQcVZtbIIPM+7SWBB+T6FK+xunlyidwLp++fN0sUaOk=
464+
go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk=
465+
go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c=
466466
go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
467467
go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
468468
go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
469469
go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
470-
go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
471-
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
470+
go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
471+
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
472472
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
473473
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
474474
go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
@@ -834,12 +834,12 @@ k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJ
834834
k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
835835
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.1 h1:uOuSLOMBWkJH0TWa9X6l+mj5nZdm6Ay6Bli8HL8rNfk=
836836
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.1/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
837-
sigs.k8s.io/cloud-provider-azure v1.29.1-0.20250305024401-4c771d529327 h1:Ykk7PsDismZ+yIlqob8fSyivMhm9q1uziZttxhGrNKU=
838-
sigs.k8s.io/cloud-provider-azure v1.29.1-0.20250305024401-4c771d529327/go.mod h1:0Bca/ySkQrlalgEgOZne7xeQVU6KFheDWD3CYGma7AE=
839-
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.9 h1:+ngbNuuzAIy4mIA09/ALZxx0c+PfriOdUZkkFwpTSv8=
840-
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.9/go.mod h1:wlb5KMXferSuS9asjIlqjU7yHnCUEtAGnwjYdDtqdmk=
841-
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.0 h1:n6NEFrYsUKuoaujmyddxS2ztXrIsbMwwcU9W3xbhjf4=
842-
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.0/go.mod h1:8ajMCBBJb9AjA2UCsDk8QyvWcuXDW8KEjJpKJHibLKc=
837+
sigs.k8s.io/cloud-provider-azure v1.29.1-0.20250316140635-7ef23be1356a h1:EIw7E9EL2/e67y5lEXAG78Xs5h83FxCXcXzD8/Y0Nf8=
838+
sigs.k8s.io/cloud-provider-azure v1.29.1-0.20250316140635-7ef23be1356a/go.mod h1:aVsb6+G1tDTLqGd2hIcEq8An49rXifJYyMH+hU/+URU=
839+
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.12 h1:9CnsYC1HVu/QPExszNb7sRLvbjeFsNiby2WsDUugSZs=
840+
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.12/go.mod h1:qMLI6HgC4GL/2w+KINP8YVDRzKCH/zQaoYHbfu7YOfU=
841+
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.1 h1:F5qZPS35TGb0ghlLGcHrbwzoO3mFnCBMM4ADGAlY+rI=
842+
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.1/go.mod h1:rEQnoF3pmD1kmAFQCwA/SqHiiftLFeMwdQt0gsuKWbM=
843843
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
844844
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
845845
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=

pkg/azuredisk/azure_common_windows.go

+7-44
Original file line numberDiff line numberDiff line change
@@ -95,61 +95,24 @@ func CleanupMountPoint(path string, m *mount.SafeFormatAndMount, unmountVolume b
9595
}
9696

9797
func getDevicePathWithMountPath(mountPath string, m *mount.SafeFormatAndMount) (string, error) {
98-
var devicePath string
99-
var err error
100-
10198
if proxy, ok := m.Interface.(mounter.CSIProxyMounter); ok {
102-
devicePath, err = proxy.GetDeviceNameFromMount(mountPath, "")
103-
} else {
104-
return "", fmt.Errorf("could not cast to csi proxy class")
105-
}
106-
107-
if err != nil {
108-
if sts, ok := status.FromError(err); ok {
109-
return "", fmt.Errorf(sts.Message())
110-
}
111-
return "", err
99+
return proxy.GetDeviceNameFromMount(mountPath, "")
112100
}
113-
114-
return devicePath, nil
101+
return "", fmt.Errorf("could not cast to csi proxy class")
115102
}
116103

117104
func getBlockSizeBytes(devicePath string, m *mount.SafeFormatAndMount) (int64, error) {
118-
var sizeInBytes int64
119-
var err error
120-
121105
if proxy, ok := m.Interface.(mounter.CSIProxyMounter); ok {
122-
sizeInBytes, err = proxy.GetVolumeSizeInBytes(devicePath)
123-
} else {
124-
return -1, fmt.Errorf("could not cast to csi proxy class")
125-
}
126-
127-
if err != nil {
128-
if sts, ok := status.FromError(err); ok {
129-
return -1, fmt.Errorf(sts.Message())
130-
}
131-
return -1, err
106+
return proxy.GetVolumeSizeInBytes(devicePath)
132107
}
133-
134-
return sizeInBytes, nil
108+
return -1, fmt.Errorf("could not cast to csi proxy class")
135109
}
136110

137111
func resizeVolume(devicePath, volumePath string, m *mount.SafeFormatAndMount) error {
138-
var err error
139112
if proxy, ok := m.Interface.(mounter.CSIProxyMounter); ok {
140-
err = proxy.ResizeVolume(devicePath)
141-
} else {
142-
return fmt.Errorf("could not cast to csi proxy class")
113+
return proxy.ResizeVolume(devicePath)
143114
}
144-
145-
if err != nil {
146-
if sts, ok := status.FromError(err); ok {
147-
return fmt.Errorf(sts.Message())
148-
}
149-
return err
150-
}
151-
152-
return nil
115+
return fmt.Errorf("could not cast to csi proxy class")
153116
}
154117

155118
// needResizeVolume check whether device needs resize
@@ -171,7 +134,7 @@ func (d *DriverCore) GetVolumeStats(ctx context.Context, m *mount.SafeFormatAndM
171134
// check if the volume stats is cached
172135
cache, err := d.volStatsCache.Get(ctx, volumeID, azcache.CacheReadTypeDefault)
173136
if err != nil {
174-
return nil, status.Errorf(codes.Internal, err.Error())
137+
return nil, status.Errorf(codes.Internal, "%v", err)
175138
}
176139
if cache != nil {
177140
volUsage := cache.(csi.VolumeUsage)

pkg/azureutils/azure_disk_utils.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,9 @@ func IsValidVolumeCapabilities(volCaps []*csi.VolumeCapability, maxShares int) e
441441
}
442442

443443
func IsValidAccessModes(volCaps []*csi.VolumeCapability) bool {
444-
hasSupport := func(cap *csi.VolumeCapability) bool {
444+
hasSupport := func(capability *csi.VolumeCapability) bool {
445445
for _, c := range volumeCaps {
446-
if c.GetMode() == cap.AccessMode.GetMode() {
446+
if c.GetMode() == capability.AccessMode.GetMode() {
447447
return true
448448
}
449449
}

pkg/csi-common/utils.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -70,21 +70,21 @@ func NewVolumeCapabilityAccessMode(mode csi.VolumeCapability_AccessMode_Mode) *c
7070
return &csi.VolumeCapability_AccessMode{Mode: mode}
7171
}
7272

73-
func NewControllerServiceCapability(cap csi.ControllerServiceCapability_RPC_Type) *csi.ControllerServiceCapability {
73+
func NewControllerServiceCapability(c csi.ControllerServiceCapability_RPC_Type) *csi.ControllerServiceCapability {
7474
return &csi.ControllerServiceCapability{
7575
Type: &csi.ControllerServiceCapability_Rpc{
7676
Rpc: &csi.ControllerServiceCapability_RPC{
77-
Type: cap,
77+
Type: c,
7878
},
7979
},
8080
}
8181
}
8282

83-
func NewNodeServiceCapability(cap csi.NodeServiceCapability_RPC_Type) *csi.NodeServiceCapability {
83+
func NewNodeServiceCapability(c csi.NodeServiceCapability_RPC_Type) *csi.NodeServiceCapability {
8484
return &csi.NodeServiceCapability{
8585
Type: &csi.NodeServiceCapability_Rpc{
8686
Rpc: &csi.NodeServiceCapability_RPC{
87-
Type: cap,
87+
Type: c,
8888
},
8989
},
9090
}

vendor/github.com/Azure/msi-dataplane/pkg/dataplane/reloadCredentials.go

+23-21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)