diff options
| author | chrislu <chris.lu@gmail.com> | 2022-02-04 11:14:04 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-02-04 11:14:04 -0800 |
| commit | 76e297d64f76f5054a2aafe752d406c81ab3fada (patch) | |
| tree | 468d7e6fba48d59d61c6032ec303855ef4fc4e60 /weed/util/file_util.go | |
| parent | d8e6bd0a942e2d2429061341c42dcfd243718ff8 (diff) | |
| download | seaweedfs-76e297d64f76f5054a2aafe752d406c81ab3fada.tar.xz seaweedfs-76e297d64f76f5054a2aafe752d406c81ab3fada.zip | |
sync call to write file, avoid vif loading error
fix https://github.com/chrislusf/seaweedfs/issues/2633
Diffstat (limited to 'weed/util/file_util.go')
| -rw-r--r-- | weed/util/file_util.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/weed/util/file_util.go b/weed/util/file_util.go index f9cc4f70b..6155d18e1 100644 --- a/weed/util/file_util.go +++ b/weed/util/file_util.go @@ -95,3 +95,20 @@ func FileNameBase(filename string) string { } return filename[:lastDotIndex] } + +// Copied from os.WriteFile(), adding file sync. +// see https://github.com/golang/go/issues/20599 +func WriteFile(name string, data []byte, perm os.FileMode) error { + f, err := os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) + if err != nil { + return err + } + _, err = f.Write(data) + if err1 := f.Sync(); err1 != nil && err == nil { + err = err1 + } + if err1 := f.Close(); err1 != nil && err == nil { + err = err1 + } + return err +} |
