Date: Fri, 12 May 2000 17:51:22 -0400 From: Sergey Babkin <babkin@bellatlantic.net> To: Alfred Perlstein <bright@wintelcom.net> Cc: Ville-Pertti Keinonen <will@iki.fi>, FengYue <fengyue@bluerose.windmoon.nu>, hackers@FreeBSD.ORG Subject: Re: Why this works? Message-ID: <391C7CDA.F9B477B7@bellatlantic.net> References: <20000511210915.A38341@Hamilton-ppp44812.sympatico.ca> <Pine.BSF.4.10.10005111955220.29094-100000@bluerose.windmoon.nu> <864s84cq35.fsf@not.demophon.com> <20000512005806.A29302@fw.wintelcom.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Alfred Perlstein wrote: > > * Ville-Pertti Keinonen <will@iki.fi> [000511 22:49] wrote: > > > > fengyue@bluerose.windmoon.nu (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 majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?391C7CDA.F9B477B7>