mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
fileutil: Sync on HFS/OSX needs to be handled differently.
A call file.Sync on OSX doesn't guarantee actual persistence on physical drive media as the data can be cached in physical drive's buffers. Hence calls to file.Sync need to be replaced with fcntl(F_FULLFSYNC).
This commit is contained in:
@@ -17,6 +17,8 @@ package ioutil
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/coreos/etcd/pkg/fileutil"
|
||||
)
|
||||
|
||||
// WriteAndSyncFile behaves just like ioutil.WriteFile in the standard library,
|
||||
@@ -32,7 +34,7 @@ func WriteAndSyncFile(filename string, data []byte, perm os.FileMode) error {
|
||||
err = io.ErrShortWrite
|
||||
}
|
||||
if err == nil {
|
||||
err = f.Sync()
|
||||
err = fileutil.Fsync(f)
|
||||
}
|
||||
if err1 := f.Close(); err == nil {
|
||||
err = err1
|
||||
|
||||
Reference in New Issue
Block a user