fsync vs. fcntl(F_FULLFSYNC) on OS X

Alan Bateman Alan.Bateman at oracle.com
Mon May 18 13:38:11 UTC 2015



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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/nio-dev/attachments/20150518/1fe9a855/attachment-0001.html>


More information about the nio-dev mailing list