]> source.dussan.org Git - jgit.git/commit
Support core.fsyncObjectFiles option 83/1883/3
authorShawn O. Pearce <spearce@spearce.org>
Wed, 10 Nov 2010 02:58:36 +0000 (18:58 -0800)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 12 Nov 2010 21:37:27 +0000 (13:37 -0800)
commit24fccadeda0a323d9b438dafab33f44491bb15d9
tree8b8048845d1fe88f6d335ca0f6120e6ae698d759
parentcfa3f365d6e526a10aa80004c7291cf1c89fbb0e
Support core.fsyncObjectFiles option

Some repositories may be on really unstable filesystems, but still
want to have good reliability when objects are written to disk.  If
core.fsyncObjectFiles is set to true, request the JVM to ensure the
data is written before returning success to the caller of insert.

The option defaults to false because it should be useless on any
filesystem that orders writes and metadata, such as ext3 mounted with
data=ordered (or data=journal).  But it may be useful on some systems
(especially HFS+) where file content may flush to the disk
independently of filesystem structure changes.

Because FileChannel.force(boolean) only claims to ensure data is
written if it was written using the write(ByteBuffer) method of
FileChannel, redirect all writes when using fsyncObjectFiles to go
through the FileChannel interface instead of through the older style
OutputStream interface.  This may not be necessary on all JVMs, but
its more portable to follow the definition than the common behavior.

Change-Id: I57f6b6bb7e403c07fbae989dbf3758eaf5edbc78
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WriteConfig.java [new file with mode: 0644]