diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2022-09-06 10:33:49 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-06 10:33:49 -0700 |
| commit | 78d6ce732aaa87a8f6a18084ffe97bfbf4eadd25 (patch) | |
| tree | 7aa18ec92b96b22fd9ad1b1d7c69ff138ecd507f /pkg/driver/mounter_seaweedfs.go | |
| parent | 006d723392a8359eb5b4d251f7362755fcaf7787 (diff) | |
| parent | 8b4d86237236df2de63107baeeaecc1cba7eff44 (diff) | |
| download | seaweedfs-csi-driver-78d6ce732aaa87a8f6a18084ffe97bfbf4eadd25.tar.xz seaweedfs-csi-driver-78d6ce732aaa87a8f6a18084ffe97bfbf4eadd25.zip | |
Merge pull request #85 from kvaster/cache
Diffstat (limited to 'pkg/driver/mounter_seaweedfs.go')
| -rw-r--r-- | pkg/driver/mounter_seaweedfs.go | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index 64af21a..a82b10b 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -2,6 +2,8 @@ package driver import ( "fmt" + "os" + "path/filepath" "strconv" "strings" @@ -19,6 +21,11 @@ type seaweedFsMounter struct { volContext map[string]string } +type seaweedFsUnmounter struct { + unmounter Unmounter + cacheDir string +} + const ( seaweedFsCmd = "weed" ) @@ -46,7 +53,7 @@ func (seaweedFs *seaweedFsMounter) getOrDefaultContextInt(key string, defaultVal v := seaweedFs.getOrDefaultContext(key, "") if v != "" { iv, err := strconv.Atoi(v) - if err != nil { + if err == nil { return iv } } @@ -97,9 +104,10 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { args = append(args, "-readOnly") } - if seaweedFs.driver.CacheDir != "" { - args = append(args, fmt.Sprintf("-cacheDir=%s", seaweedFs.driver.CacheDir)) - } + // CacheDir should be always defined - we use temp dir in case it is not defined + // we need to use predictable cache path, because we need to clean it up on unstage + cacheDir := filepath.Join(seaweedFs.driver.CacheDir, seaweedFs.volumeID) + args = append(args, fmt.Sprintf("-cacheDir=%s", cacheDir)) if cw := seaweedFs.getOrDefaultContextInt("concurrentWriters", seaweedFs.driver.ConcurrentWriters); cw > 0 { args = append(args, fmt.Sprintf("-concurrentWriters=%d", cw)) @@ -115,7 +123,14 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { if err != nil { glog.Errorf("mount %v %s to %s: %s", seaweedFs.driver.filers, seaweedFs.path, target, err) } - return u, err + + return &seaweedFsUnmounter{unmounter: u, cacheDir: cacheDir}, err +} + +func (su *seaweedFsUnmounter) Unmount() error { + err := su.unmounter.Unmount() + _ = os.RemoveAll(su.cacheDir) + return err } func GetLocalSocket(volumeID string) string { |
