From d8f25cbba6af6d00005644fffb6231a95466efe4 Mon Sep 17 00:00:00 2001 From: JDierkse Date: Thu, 4 Aug 2022 20:29:10 +0200 Subject: [PATCH] Fix state persistence, create folder if it doesn't exist --- driver.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/driver.go b/driver.go index 6cc4008..1ff2b00 100644 --- a/driver.go +++ b/driver.go @@ -54,9 +54,23 @@ func newiscsiDriver(root string) (*iscsiDriver, error) { return nil, util.LogError("%v already exist and it's not a directory", root) } + stateFolder := filepath.Join(root, "plugins", "docker-iscsi") + fi, err = os.Lstat(stateFolder) + if os.IsNotExist(err) { + if err := os.MkdirAll(stateFolder, 0755); err != nil { + return nil, err + } + } else if err != nil { + return nil, err + } + + if fi != nil && !fi.IsDir() { + return nil, util.LogError("%v already exist and it's not a directory", stateFolder) + } + d := &iscsiDriver{ root: filepath.Join(root, "volumes"), - statePath: filepath.Join(root, "plugins", "docker-iscsi", "iscsi-state.json"), + statePath: filepath.Join(stateFolder, "iscsi-state.json"), volumes: map[string]*iscsiVolume{}, } @@ -133,8 +147,10 @@ func (d *iscsiDriver) Remove(r *volume.RemoveRequest) error { if err := os.RemoveAll(v.Mountpoint); err != nil { return util.LogError(err.Error()) } + delete(d.volumes, r.Name) d.saveState() + return nil }