Merge pull request #97082 from andyzhangx/azurefile-actimeo

fix: azure file latency issue for metadata-heavy workloads
This commit is contained in:
Kubernetes Prow Robot 2020-12-21 19:12:25 -08:00 committed by GitHub
commit 0f7c2dc314
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 7 deletions

View File

@ -371,7 +371,10 @@ func TestAppendDefaultMountOptions(t *testing.T) {
fsGroup: nil, fsGroup: nil,
expected: []string{"dir_mode=0777", expected: []string{"dir_mode=0777",
fmt.Sprintf("%s=%s", fileMode, defaultFileMode), 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"}, options: []string{"file_mode=0777"},
@ -379,7 +382,10 @@ func TestAppendDefaultMountOptions(t *testing.T) {
expected: []string{"file_mode=0777", expected: []string{"file_mode=0777",
fmt.Sprintf("%s=%s", dirMode, defaultDirMode), fmt.Sprintf("%s=%s", dirMode, defaultDirMode),
fmt.Sprintf("%s=%s", vers, defaultVers), 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"}, options: []string{"vers=2.1"},
@ -387,18 +393,28 @@ func TestAppendDefaultMountOptions(t *testing.T) {
expected: []string{"vers=2.1", expected: []string{"vers=2.1",
fmt.Sprintf("%s=%s", fileMode, defaultFileMode), fmt.Sprintf("%s=%s", fileMode, defaultFileMode),
fmt.Sprintf("%s=%s", dirMode, defaultDirMode), 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{""}, options: []string{""},
expected: []string{"", fmt.Sprintf("%s=%s", expected: []string{"", fmt.Sprintf("%s=%s",
fileMode, defaultFileMode), fileMode, defaultFileMode),
fmt.Sprintf("%s=%s", dirMode, defaultDirMode), 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"}, options: []string{"file_mode=0777", "dir_mode=0777"},
expected: []string{"file_mode=0777", "dir_mode=0777", fmt.Sprintf("%s=%s", vers, defaultVers)}, 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"}, options: []string{"gid=2000"},
@ -406,7 +422,20 @@ func TestAppendDefaultMountOptions(t *testing.T) {
expected: []string{"gid=2000", expected: []string{"gid=2000",
fmt.Sprintf("%s=%s", fileMode, defaultFileMode), fmt.Sprintf("%s=%s", fileMode, defaultFileMode),
fmt.Sprintf("%s=%s", dirMode, defaultDirMode), 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,
},
}, },
} }

View File

@ -34,9 +34,12 @@ const (
dirMode = "dir_mode" dirMode = "dir_mode"
gid = "gid" gid = "gid"
vers = "vers" vers = "vers"
actimeo = "actimeo"
mfsymlinks = "mfsymlinks"
defaultFileMode = "0777" defaultFileMode = "0777"
defaultDirMode = "0777" defaultDirMode = "0777"
defaultVers = "3.0" defaultVers = "3.0"
defaultActimeo = "30"
) )
// Abstract interface to azure file operations. // Abstract interface to azure file operations.
@ -106,6 +109,8 @@ func appendDefaultMountOptions(mountOptions []string, fsGroup *int64) []string {
dirModeFlag := false dirModeFlag := false
versFlag := false versFlag := false
gidFlag := false gidFlag := false
actimeoFlag := false
mfsymlinksFlag := false
for _, mountOption := range mountOptions { for _, mountOption := range mountOptions {
if strings.HasPrefix(mountOption, fileMode) { if strings.HasPrefix(mountOption, fileMode) {
@ -120,6 +125,12 @@ func appendDefaultMountOptions(mountOptions []string, fsGroup *int64) []string {
if strings.HasPrefix(mountOption, gid) { if strings.HasPrefix(mountOption, gid) {
gidFlag = true gidFlag = true
} }
if strings.HasPrefix(mountOption, actimeo) {
actimeoFlag = true
}
if strings.HasPrefix(mountOption, mfsymlinks) {
mfsymlinksFlag = true
}
} }
allMountOptions := mountOptions allMountOptions := mountOptions
@ -138,5 +149,13 @@ func appendDefaultMountOptions(mountOptions []string, fsGroup *int64) []string {
if !gidFlag && fsGroup != nil { if !gidFlag && fsGroup != nil {
allMountOptions = append(allMountOptions, fmt.Sprintf("%s=%d", gid, *fsGroup)) 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 return allMountOptions
} }