A simpler specification would be:
The end-of-file position visible to a given process is
equal to one plus the position of the last accessible
byte in the file when the process views the file as
congiuous bytes with no gaps.
Advice to Users: Different processes may sometimes
see different end-of-file positions because an
implementation may buffer writes locally. After a
call to MPI_FILE_SYNC the end-of-file position visible
to all processes is the same.
End of advice to users.
This ties the size of the file to what's actually
visible to a process, and it allows implementations
that do local buffering a little leeway, while
requiring that local consistency semantics work
correctly. (i.e., whatever you write is immediately
visible on the same node.) Also, I prefer to say
end-of-file rather than file size to avoid confusion
when a file contains gaps.
John