* Sergey Babkin <[EMAIL PROTECTED]> [000512 15:23] wrote:
> 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 :-(

This weirdness is intentional, it's a shortcut for speed taken at
the expense of real unix compatibility.

> 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).

That's why I use FreeBSD, it works. :)

-- 
-Alfred Perlstein - [[EMAIL PROTECTED]|[EMAIL PROTECTED]]
"I have the heart of a child; I keep it in a jar on my desk."


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to