From 5ce378b046e500eadd1fb53e1b1488488488ce1f Mon Sep 17 00:00:00 2001 From: Tommi Virtanen Date: Sat, 22 Mar 2014 20:45:53 -0700 Subject: 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. --- tx.go | 3 +++ 1 file changed, 3 insertions(+) (limited to 'tx.go') diff --git a/tx.go b/tx.go index 5b2b14d..181444e 100644 --- a/tx.go +++ b/tx.go @@ -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) -- cgit v1.2.3