diff --git a/pkg/volume/azure_file/azure_file_test.go b/pkg/volume/azure_file/azure_file_test.go index e528345b1a0..231fdf44f62 100644 --- a/pkg/volume/azure_file/azure_file_test.go +++ b/pkg/volume/azure_file/azure_file_test.go @@ -371,7 +371,10 @@ func TestAppendDefaultMountOptions(t *testing.T) { fsGroup: nil, expected: []string{"dir_mode=0777", fmt.Sprintf("%s=%s", fileMode, defaultFileMode), - fmt.Sprintf("%s=%s", vers, defaultVers)}, + fmt.Sprintf("%s=%s", vers, defaultVers), + fmt.Sprintf("%s=%s", actimeo, defaultActimeo), + mfsymlinks, + }, }, { options: []string{"file_mode=0777"}, @@ -379,7 +382,10 @@ func TestAppendDefaultMountOptions(t *testing.T) { expected: []string{"file_mode=0777", fmt.Sprintf("%s=%s", dirMode, defaultDirMode), fmt.Sprintf("%s=%s", vers, defaultVers), - fmt.Sprintf("%s=0", gid)}, + fmt.Sprintf("%s=0", gid), + fmt.Sprintf("%s=%s", actimeo, defaultActimeo), + mfsymlinks, + }, }, { options: []string{"vers=2.1"}, @@ -387,18 +393,28 @@ func TestAppendDefaultMountOptions(t *testing.T) { expected: []string{"vers=2.1", fmt.Sprintf("%s=%s", fileMode, defaultFileMode), fmt.Sprintf("%s=%s", dirMode, defaultDirMode), - fmt.Sprintf("%s=1000", gid)}, + fmt.Sprintf("%s=1000", gid), + fmt.Sprintf("%s=%s", actimeo, defaultActimeo), + mfsymlinks, + }, }, { options: []string{""}, expected: []string{"", fmt.Sprintf("%s=%s", fileMode, defaultFileMode), fmt.Sprintf("%s=%s", dirMode, defaultDirMode), - fmt.Sprintf("%s=%s", vers, defaultVers)}, + fmt.Sprintf("%s=%s", vers, defaultVers), + fmt.Sprintf("%s=%s", actimeo, defaultActimeo), + mfsymlinks, + }, }, { - options: []string{"file_mode=0777", "dir_mode=0777"}, - expected: []string{"file_mode=0777", "dir_mode=0777", fmt.Sprintf("%s=%s", vers, defaultVers)}, + options: []string{"file_mode=0777", "dir_mode=0777"}, + expected: []string{"file_mode=0777", "dir_mode=0777", + fmt.Sprintf("%s=%s", vers, defaultVers), + fmt.Sprintf("%s=%s", actimeo, defaultActimeo), + mfsymlinks, + }, }, { options: []string{"gid=2000"}, @@ -406,7 +422,20 @@ func TestAppendDefaultMountOptions(t *testing.T) { expected: []string{"gid=2000", fmt.Sprintf("%s=%s", fileMode, defaultFileMode), fmt.Sprintf("%s=%s", dirMode, defaultDirMode), - "vers=3.0"}, + "vers=3.0", + fmt.Sprintf("%s=%s", actimeo, defaultActimeo), + mfsymlinks, + }, + }, + { + options: []string{"actimeo=3"}, + expected: []string{ + "actimeo=3", + fmt.Sprintf("%s=%s", fileMode, defaultFileMode), + fmt.Sprintf("%s=%s", dirMode, defaultDirMode), + fmt.Sprintf("%s=%s", vers, defaultVers), + mfsymlinks, + }, }, } diff --git a/pkg/volume/azure_file/azure_util.go b/pkg/volume/azure_file/azure_util.go index eab56cb563b..017f1ac2206 100644 --- a/pkg/volume/azure_file/azure_util.go +++ b/pkg/volume/azure_file/azure_util.go @@ -34,9 +34,12 @@ const ( dirMode = "dir_mode" gid = "gid" vers = "vers" + actimeo = "actimeo" + mfsymlinks = "mfsymlinks" defaultFileMode = "0777" defaultDirMode = "0777" defaultVers = "3.0" + defaultActimeo = "30" ) // Abstract interface to azure file operations. @@ -106,6 +109,8 @@ func appendDefaultMountOptions(mountOptions []string, fsGroup *int64) []string { dirModeFlag := false versFlag := false gidFlag := false + actimeoFlag := false + mfsymlinksFlag := false for _, mountOption := range mountOptions { if strings.HasPrefix(mountOption, fileMode) { @@ -120,6 +125,12 @@ func appendDefaultMountOptions(mountOptions []string, fsGroup *int64) []string { if strings.HasPrefix(mountOption, gid) { gidFlag = true } + if strings.HasPrefix(mountOption, actimeo) { + actimeoFlag = true + } + if strings.HasPrefix(mountOption, mfsymlinks) { + mfsymlinksFlag = true + } } allMountOptions := mountOptions @@ -138,5 +149,13 @@ func appendDefaultMountOptions(mountOptions []string, fsGroup *int64) []string { if !gidFlag && fsGroup != nil { allMountOptions = append(allMountOptions, fmt.Sprintf("%s=%d", gid, *fsGroup)) } + + if !actimeoFlag { + allMountOptions = append(allMountOptions, fmt.Sprintf("%s=%s", actimeo, defaultActimeo)) + } + + if !mfsymlinksFlag { + allMountOptions = append(allMountOptions, mfsymlinks) + } return allMountOptions }