Ian Charnas wrote:
As noted by SQLite [1] and MySQL [2] developers, fsync on OS X does
not actually flush a file to disk... instead OS X provides "fullfsync"
which actually flushes the file descriptor to disk.  This simple patch
modifies python's "fsync" to take advantage of fullfsync on platforms
that support it:
http://bugs.python.org/issue3512

I don't believe your patch is correct. My understanding is that fsync() on OS X does the exact same thing as it does on any other POSIX platform. On all platforms, fsync() does not guarantee that your data has made it to permanent storage. fcntl(fd, F_FULLSYNC) is an additional feature on OS X to force the OS X to wait for the underlying device's write buffers to have cleared. See the discussion on darwin-dev[1]:

"""
So in summary, I believe that the comments in the MySQL news posting
are slightly confused.  On MacOS X fsync() behaves the same as it does
on all Unices.  That's not good enough if you really care about data
integrity and so we also provide the F_FULLFSYNC fcntl.  As far as I
know, MacOS X is the only OS to provide this feature for apps that
need to truly guarantee their data is on disk.
"""

If you want this feature to be accessible in python, then I think you should modify the fcntl module to include F_FULLSYNC.

-Scott

[1] http://lists.apple.com/archives/darwin-dev/2005/Feb/msg00072.html

--
Scott Dial
[EMAIL PROTECTED]
[EMAIL PROTECTED]
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to