Tom Lane <tgl@sss.pgh.pa.us> writes:
> We just bought back almost all the system time. The only possible
> explanation is that this way either doesn't keep the buffers from prior
> blocks, or does not scan them for dirtybits. I note that the open(2)
> man page is phrased so that O_SYNC is actually defined not to fsync the
> whole file, but only the part you just wrote --- I wonder if it's
> actually implemented that way?
Sure, why not? That's how it is implemented in the Linux kernel. If
you do a write with O_SYNC set, the write simply flushes out the
buffers it just modified. If you call fsync, the kernel has to walk
through all the buffers looking for ones associated with the file in
question.
Ian