fsync: Linux vs FreeBSD

Robert Bonomi bonomi at mail.r-bonomi.com
Wed Oct 27 00:53:51 UTC 2010


On Oct 26, 2010, at 11:33 AM, Marc G. Fournier wrote:
> Someone recently posted on one of the PostgreSQL Blogs concerning fsync on Linux/Windows/Mac OS X, but failed to make any comments on any of the BSDs ... the post has to do with how fsync works on the various OSs, and am curious as to whether or not this is something that also afflicts us:
> 
> http://rhaas.blogspot.com/2010/10/wal-reliability.html
> 
>> From reading our man page, I see no warnings similar to what the other OSs 
> have, specifically:
> 
> Mac OS X: For applications that require tighter guarantees about the
>          integrity of their data, Mac OS X provides the F_FULLFSYNC fcntl
> 
> Linux: If the underlying hard disk has write caching enabled, then the
>       data may not really be on permanent storage when fsync() /
>       fdatasync() return.
> 
> So, do we hide the fact, or are, in fact, not afflicted by this?
>
>
It has -always- been the case with the Berkeley FFS that, by default,  not 
all operations are sychronous,  and that sync()/fsync() just 'schedule'
the flush operation, w/o waiting for it to complete.  This is precisely
why the "tradiitional" emergency shutdown was: 
     "sync <newline> sync <newline> halt {or haltsys"} <newline>"

There is a mount option that forces all I/O on the device to be synchronous,
but the performance penalty is _massive_.




More information about the freebsd-questions mailing list