diff --git a/doc/manual/conf-file.xml b/doc/manual/conf-file.xml
index 2ee268097..19e86808e 100644
--- a/doc/manual/conf-file.xml
+++ b/doc/manual/conf-file.xml
@@ -241,7 +241,7 @@ build-use-chroot = /dev /proc /bin
Nix store metadata (in /nix/var/nix/db) are
synchronously flushed to disk. This improves robustness in case
of system crashes, but reduces performance. The default is
- false.
+ true.
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 6e8082776..67a91bb49 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -219,9 +219,13 @@ LocalStore::LocalStore()
/* !!! check whether sqlite has been built with foreign key
support */
- /* "Normal" synchronous mode should be safe enough. */
- if (sqlite3_exec(db, "pragma synchronous = normal;", 0, 0, 0) != SQLITE_OK)
- throw SQLiteError(db, "changing synchronous mode to normal");
+ /* Whether SQLite should fsync(). "Normal" synchronous mode
+ should be safe enough. If the user asks for it, don't sync at
+ all. This can cause database corruption if the system
+ crashes. */
+ string syncMode = queryBoolSetting("fsync-metadata", true) ? "normal" : "off";
+ if (sqlite3_exec(db, ("pragma synchronous = " + syncMode + ";").c_str(), 0, 0, 0) != SQLITE_OK)
+ throw SQLiteError(db, "setting synchronous mode");
/* Check the current database schema and if necessary do an
upgrade. !!! Race condition: several processes could start
@@ -243,8 +247,6 @@ LocalStore::LocalStore()
"please upgrade Nix to version 0.12 first.");
else if (curSchema < 6) upgradeStore6();
else prepareStatements();
-
- doFsync = queryBoolSetting("fsync-metadata", false);
}
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index 1a4acbe0e..ec0b482ea 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -191,9 +191,6 @@ private:
/* Lock file used for upgrading. */
AutoCloseFD globalLock;
- /* Whether to do an fsync() after writing Nix metadata. */
- bool doFsync;
-
/* The SQLite database object. */
SQLite db;
diff --git a/tests/init.sh b/tests/init.sh
index 691cb669b..64947031b 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -40,6 +40,7 @@ cat > "$NIX_CONF_DIR"/nix.conf <