From 58aa31495ff03205b98d710a66377c46490aac16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=8A=A0?= Date: Fri, 8 Mar 2024 11:24:27 +0800 Subject: [PATCH] fix: cleanup volume dir if create volume failed Volume path should be cleaned up if create volume failed. Otherwise, the volume will be created failed again next time with a 'file exists' error on os.Mkdir. Signed-off-by: baijia --- pkg/mountutil/volumestore/volumestore.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/mountutil/volumestore/volumestore.go b/pkg/mountutil/volumestore/volumestore.go index 48fbbfa5397..d66cbf08023 100644 --- a/pkg/mountutil/volumestore/volumestore.go +++ b/pkg/mountutil/volumestore/volumestore.go @@ -83,13 +83,23 @@ func (vs *volumeStore) Create(name string, labels []string) (*native.Volume, err } volPath := filepath.Join(vs.dir, name) volDataPath := filepath.Join(volPath, DataDirName) - fn := func() error { + fn := func() (err error) { if err := os.Mkdir(volPath, 0700); err != nil { return err } + defer func() { + if err != nil { + os.Remove(volPath) + } + }() if err := os.Mkdir(volDataPath, 0755); err != nil { return err } + defer func() { + if err != nil { + os.Remove(volDataPath) + } + }() type volumeOpts struct { Labels map[string]string `json:"labels"`