Tim> [Martin v. Löwis] >> As Guido explains, fsync is not necessary for that kind of >> application on a POSIX system. Once write(2) has completed, all other >> processes immediately see the changed data.
Tim> But we're not calling write(2) -- Python's file.write() (which my Tim> little driver used, and also what ZODB uses) calls the buffered Tim> fwrite.
Then shouldn't a file.flush() call be sufficient to force a call to write(2) on POSIX systems?
Tim> Ignoring that, some systems aren't "pure". I note that, on my Tim> Windows box, some Cygwin utilties "see" the hoped-for file sizes Tim> while running my driver without the fsync under Cygwin Python, but Tim> Windows utilities don't. I was using Cygwin 2.2.2; I don't know Tim> whether 2.3.1 under Cygwin thinks fsync has gone missing.
It's been established that os.fsync() is required for Windows in at least some circumstances, so you have to assume it's required under all circumstances, correct?