From 229c015089e04351cfdfaf36950cc41685295910 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Thu, 6 Nov 2025 14:04:35 +0000 Subject: [PATCH 1/2] fix: skip chmod setting in readonly mode --- pkg/blob/nodeserver.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/blob/nodeserver.go b/pkg/blob/nodeserver.go index e6ea28e01..9106b8cd8 100644 --- a/pkg/blob/nodeserver.go +++ b/pkg/blob/nodeserver.go @@ -389,8 +389,12 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe } if performChmodOp { - if err := chmodIfPermissionMismatch(targetPath, os.FileMode(mountPermissions)); err != nil { - return nil, status.Error(codes.Internal, err.Error()) + if !isReadOnlyFromCapability(volumeCapability) { + if err := chmodIfPermissionMismatch(targetPath, os.FileMode(mountPermissions)); err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + } else { + klog.V(2).Infof("skip chmod on targetPath(%s) since it's a read-only mount", targetPath) } } else { klog.V(2).Infof("skip chmod on targetPath(%s) since mountPermissions is set as 0", targetPath) From 3a54bb68cee25f3c4d16b3c5845b51d165613819 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Fri, 7 Nov 2025 07:14:14 +0000 Subject: [PATCH 2/2] test: set readOnly flag in e2e test --- test/e2e/dynamic_provisioning_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/e2e/dynamic_provisioning_test.go b/test/e2e/dynamic_provisioning_test.go index 3e1b2d804..40543cdd8 100644 --- a/test/e2e/dynamic_provisioning_test.go +++ b/test/e2e/dynamic_provisioning_test.go @@ -269,6 +269,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() { VolumeMount: testsuites.VolumeMountDetails{ NameGenerate: "test-volume-", MountPathGenerate: "/mnt/test-", + ReadOnly: true, }, AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany}, },