Browse Source

More fixes for blockchain corruption on OSX.

As we'd previously learned, OSX's fsync is a data eating lie.

Since 0.8.4 we're still getting some reports of disk corruption on
 OSX but now all of it looks like the block files have gotten out of
 sync with the database. It turns out that we were still using fsync()
 on the block files, so this isn't surprising.
0.10
Gregory Maxwell 11 years ago
parent
commit
e7bad10c12
  1. 2
      src/util.cpp

2
src/util.cpp

@ -1156,6 +1156,8 @@ void FileCommit(FILE *fileout)
#else #else
#if defined(__linux__) || defined(__NetBSD__) #if defined(__linux__) || defined(__NetBSD__)
fdatasync(fileno(fileout)); fdatasync(fileno(fileout));
#elif defined(__APPLE__) && defined(F_FULLFSYNC)
fcntl(fileno(fileout), F_FULLFSYNC, 0);
#else #else
fsync(fileno(fileout)); fsync(fileno(fileout));
#endif #endif

Loading…
Cancel
Save