Jakob Bohm wrote:
It is not as much a direct requirement as an indirect one.
Specifically, for local filesystems, there is no other way in
which a user mode application (such as a DB engine) can control
when its data has reached stable storage after closing the file
handle.
There is no indirect requirement either. User mode applications that care about
stable data are supposed to use fdatasync or fsync or something like that.
'close' is not required to ensure that the data have hit stable storage, and on
most operating systems I believe 'close' does not do that. This is for obvious
performance reasons. The GNU/Linux man page for 'close', for example, says "A
successful close does not guarantee that the data has been successfully saved to
disk, as the kernel defers writes."
If some virus scanners have trouble in this area, that's something that needs to
be fixed in the virus scanners; it shouldn't require changing all other
applications to work around the virus scanners' performance deficiencies.