Skip to content

Commit

Permalink
mingw: change core.fsyncObjectFiles = 1 by default
Browse files Browse the repository at this point in the history
From the documentation of said setting:

	This boolean will enable fsync() when writing object files.

	This is a total waste of time and effort on a filesystem that
	orders data writes properly, but can be useful for filesystems
	that do not use journalling (traditional UNIX filesystems) or
	that only journal metadata and not file contents (OS X’s HFS+,
	or Linux ext3 with "data=writeback").

The most common file system on Windows (NTFS) does not guarantee that
order, therefore a sudden loss of power (or any other event causing an
unclean shutdown) would cause corrupt files (i.e. files filled with
NULs). Therefore we need to change the default.

Note that the documentation makes it sound as if this causes really bad
performance. In reality, writing loose objects is something that is done
only rarely, and only a handful of files at a time.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Sep 11, 2017
1 parent 4be162d commit b5915c6
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions compat/mingw.c
Original file line number Diff line number Diff line change
Expand Up @@ -3313,6 +3313,7 @@ int msc_startup(int argc, wchar_t **w_argv, wchar_t **w_env)
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif

fsync_object_files = 1;
maybe_redirect_std_handles();
adjust_symlink_flags();

Expand Down Expand Up @@ -3380,6 +3381,7 @@ void mingw_startup(void)
wchar_t **wenv, **wargv;
_startupinfo si;

fsync_object_files = 1;
maybe_redirect_std_handles();
adjust_symlink_flags();

Expand Down

0 comments on commit b5915c6

Please sign in to comment.