Alfred Perlstein wrote:
>
> * Ville-Pertti Keinonen <[EMAIL PROTECTED]> [000511 22:49] wrote:
> >
> > [EMAIL PROTECTED] (FengYue) writes:
> >
> > > loop. Now, the third program reads 4K of data from /tmp/pagetest
> > > and exit if the 4K data does not contain all 'A's nor 'Z's. 3 programs
> > > run concurrently on the same machine (3.4). No lock in the code whatsoever,
> >
> > Not quite. If FreeBSD didn't perform locking, operations affecting
> > single filesystem blocks would probably be atomic (as long as the
> > userland buffer is in memory).
> >
> > However, FreeBSD does perform locking in read(2) and write(2) for
> > local files, so your third program should never fail and exit.
> >
> > Note that the system call interface does not guarantee reads or writes
> > to be atomic, this just happens to be how it is implemented at the
> > moment.
>
> Afaik several Unix standards mandate this behavior, Linux doesn't
> follow this standard though.
Sounds like one more of these subtle weirdnesses in Linux that
annoy me so much :-(
Solaris seems to be another example a system with not quite atomic
writes. The writes themselves seem to be atomic but in append mode the
positioning at the end of file is not atomic with writes. So when
appending to a log file from multiple sources the messages tend to
overlap (be written at the same position).
-SB
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message