diff options
-rw-r--r-- | syscall.go | 9 | ||||
-rw-r--r-- | syscall_linux.go | 10 | ||||
-rw-r--r-- | tx.go | 3 |
3 files changed, 22 insertions, 0 deletions
diff --git a/syscall.go b/syscall.go new file mode 100644 index 0000000..c3a1bb5 --- /dev/null +++ b/syscall.go @@ -0,0 +1,9 @@ +// +build !linux + +package bolt + +import "os" + +func fdatasync(f *os.File) error { + return f.Sync() +} diff --git a/syscall_linux.go b/syscall_linux.go new file mode 100644 index 0000000..351b65a --- /dev/null +++ b/syscall_linux.go @@ -0,0 +1,10 @@ +package bolt + +import ( + "os" + "syscall" +) + +func fdatasync(f *os.File) error { + return syscall.Fdatasync(int(f.Fd())) +} @@ -329,6 +329,9 @@ func (t *Tx) write() error { return err } } + if err := fdatasync(t.db.file); err != nil { + return err + } // Clear out page cache. t.pages = make(map[pgid]*page) |