You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Alan Bateman <Al...@oracle.com> on 2015/05/18 15:38:11 UTC

Re: fsync vs. fcntl(F_FULLFSYNC) on OS X


On 13/05/2015 10:27, Uwe Schindler wrote:
> :
>
> There is one additional issue we found recently on MacOSX, but this is 
> only slightly related to the one here. It looks like on MacOSX, 
> FileChannel#force is mostly a noop regarding syncing data to disk, 
> because the underlying operating system requires a “special” fnctl to 
> force buffers to disk device:
>
> https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/fsync.2.html:
>
>      For applications that require tighter guarantees about the 
> integrity of their data, Mac OS X provides
>
>      the F_FULLFSYNC fcntl.  The F_FULLFSYNC fcntl asks the drive to 
> flush all buffered data to permanent
>
>      storage.  Applications, such as databases, that require a strict 
> ordering of writes should use F_FULLFSYNC
>
>      to ensure that their data is written in the order they expect.  
> Please see fcntl(2) for more
>
>      detail.
>
Thank for brining this up, I don't recall anyone pointing this out 
before. I don't know if Apple's JDK use this fcntl but when the OS X 
port came into OpenJDK then it implemented force as fsync (irrespective 
of the metaData field).

Testing this is going to difficult through.

-Alan