From dce507ce698d5dbcbcf0acb9f234ceac4032c5c3 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Thu, 1 Mar 2018 05:57:32 +0000 Subject: [PATCH] add remount logic for azure file plugin fix comments --- pkg/volume/azure_file/azure_file.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/volume/azure_file/azure_file.go b/pkg/volume/azure_file/azure_file.go index c0e29d9161..b7efb940d0 100644 --- a/pkg/volume/azure_file/azure_file.go +++ b/pkg/volume/azure_file/azure_file.go @@ -18,6 +18,7 @@ package azure_file import ( "fmt" + "io/ioutil" "os" "runtime" @@ -241,8 +242,20 @@ func (b *azureFileMounter) SetUpAt(dir string, fsGroup *int64) error { return err } if !notMnt { - return nil + // testing original mount point, make sure the mount link is valid + if _, err := ioutil.ReadDir(dir); err == nil { + glog.V(4).Infof("azureFile - already mounted to target %s", dir) + return nil + } + // mount link is invalid, now unmount and remount later + glog.Warningf("azureFile - ReadDir %s failed with %v, unmount this directory", dir, err) + if err := b.mounter.Unmount(dir); err != nil { + glog.Errorf("azureFile - Unmount directory %s failed with %v", dir, err) + return err + } + notMnt = true } + var accountKey, accountName string if accountName, accountKey, err = b.util.GetAzureCredentials(b.plugin.host, b.secretNamespace, b.secretName); err != nil { return err