From owner-freebsd-hackers Fri May 12 17:21:13 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from bluerose.windmoon.nu (c255152-a.plstn1.sfba.home.com [24.15.210.246]) by hub.freebsd.org (Postfix) with ESMTP id A421C37BF4C for ; Fri, 12 May 2000 17:21:07 -0700 (PDT) (envelope-from fengyue@bluerose.windmoon.nu) Received: from localhost (fengyue@localhost) by bluerose.windmoon.nu (Windmoon-Patched/8.9.3/8.9.3) with ESMTP id RAA42479 for ; Fri, 12 May 2000 17:45:10 -0700 (PDT) Date: Fri, 12 May 2000 17:45:10 -0700 (PDT) From: FengYue To: hackers@FreeBSD.ORG Subject: Re: Why this works? In-Reply-To: <20000512161107.A19644@fw.wintelcom.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This is a silly question, but, Is there anyway to do read/write on the same file without the kernel lock? Thanks! On Fri, 12 May 2000, Alfred Perlstein wrote: > * Sergey Babkin [000512 15:23] wrote: > > Alfred Perlstein wrote: > > > > > > * Ville-Pertti Keinonen [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 :-( > > 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 - [bright@wintelcom.net|alfred@freebsd.org] > "I have the heart of a child; I keep it in a jar on my desk." > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message