Skip to content

Commit aba684b

Browse files
authored
[POSIX] Don't complain about mkdir already exists & expose os errors to storage impl (#911)
1 parent 0de0714 commit aba684b

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

storage/posix/file_ops.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,15 @@ func mkdirAll(name string, perm os.FileMode) error {
8989
return syncDir(dir, func() error {
9090
// We'll see ErrNotExist if the final entry in the requested path doesn't exist,
9191
// so we simply attempt to create it in here.
92-
if err := os.Mkdir(name, perm); err != nil {
93-
return fmt.Errorf("%q: %v", name, err)
92+
//
93+
// Ignore ErrExist as that just means someone else raced us and got there first.
94+
if err := os.Mkdir(name, perm); err != nil && !errors.Is(err, os.ErrExist) {
95+
return fmt.Errorf("%q: %w", name, err)
9496
}
9597
return nil
9698
})
9799
case err != nil:
98-
return fmt.Errorf("lstat %q: %v", name, err)
100+
return fmt.Errorf("lstat %q: %w", name, err)
99101
case !di.IsDir():
100102
return fmt.Errorf("%s is not a directory", name)
101103
default:
@@ -116,7 +118,7 @@ func createEx(name string, d []byte) error {
116118
return syncDir(dir, func() error {
117119
tmpName, err := createTemp(name, d)
118120
if err != nil {
119-
return fmt.Errorf("failed to create temp file: %v", err)
121+
return fmt.Errorf("failed to create temp file: %w", err)
120122
}
121123
defer func() {
122124
if err := os.Remove(tmpName); err != nil {
@@ -147,7 +149,7 @@ func overwrite(name string, d []byte) error {
147149

148150
tmpName, err := createTemp(name, d)
149151
if err != nil {
150-
return fmt.Errorf("failed to create temp file: %v", err)
152+
return fmt.Errorf("failed to create temp file: %w", err)
151153
}
152154

153155
if err := os.Rename(tmpName, name); err != nil {
@@ -189,7 +191,7 @@ func createTemp(prefix string, d []byte) (name string, err error) {
189191
}()
190192

191193
if n, err := f.Write(d); err != nil {
192-
return "", fmt.Errorf("failed to write to temporary file %q: %v", name, err)
194+
return "", fmt.Errorf("failed to write to temporary file %q: %w", name, err)
193195
} else if l := len(d); n < l {
194196
return "", fmt.Errorf("short write on %q, %d < %d", name, n, l)
195197
}

0 commit comments

Comments
 (0)