diff options
author | Tommi Virtanen <tv@eagain.net> | 2014-03-22 20:45:53 -0700 |
---|---|---|
committer | Tommi Virtanen <tv@eagain.net> | 2014-03-22 20:47:08 -0700 |
commit | 5ce378b046e500eadd1fb53e1b1488488488ce1f (patch) | |
tree | dc70a4ab70954fa2eed179ebfb1472c700086946 /sync_linux.go | |
parent | Merge pull request #74 from benbjohnson/cli (diff) | |
download | dedo-5ce378b046e500eadd1fb53e1b1488488488ce1f.tar.gz dedo-5ce378b046e500eadd1fb53e1b1488488488ce1f.tar.xz |
Call fdatasync/fsync after writing out non-meta pages
This avoids a case where writes can be reordered so meta page is
written before a page it refers to, potentially causing a corrupt
database after a power loss or kernel crash.
Diffstat (limited to 'sync_linux.go')
-rw-r--r-- | sync_linux.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sync_linux.go b/sync_linux.go new file mode 100644 index 0000000..351b65a --- /dev/null +++ b/sync_linux.go @@ -0,0 +1,10 @@ +package bolt + +import ( + "os" + "syscall" +) + +func fdatasync(f *os.File) error { + return syscall.Fdatasync(int(f.Fd())) +} |