From owner-freebsd-hackers Tue Feb 6 12:58:20 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from mailtoaster1.pipeline.ch (mailtoaster1.pipeline.ch [62.48.0.70]) by hub.freebsd.org (Postfix) with SMTP id CDEB437B698 for ; Tue, 6 Feb 2001 12:58:01 -0800 (PST) Received: (qmail 14721 invoked from network); 6 Feb 2001 20:54:50 -0000 Received: from unknown (HELO monzoon.net) ([195.134.133.140]) (envelope-sender ) by mailtoaster1.pipeline.ch (qmail-ldap-1.03) with SMTP for ; 6 Feb 2001 20:54:50 -0000 Message-ID: <3A80650D.9FA0BCDA@monzoon.net> Date: Tue, 06 Feb 2001 21:56:45 +0100 From: Andre Oppermann X-Mailer: Mozilla 4.74 [en] (Windows NT 5.0; U) X-Accept-Language: en MIME-Version: 1.0 To: Alfred Perlstein Cc: Matt Dillon , Rik van Riel , Mike Silbersack , Poul-Henning Kamp , Charles Randall , Dan Phoenix , Jos Backus , freebsd-hackers@FreeBSD.ORG Subject: Re: soft updates and qmail (RE: qmail IO problems) References: <3A805035.C71AAD5E@monzoon.net> <200102061943.f16Jhp365113@earth.backplane.com> <3A805938.96ED890D@monzoon.net> <20010206121357.S26076@fw.wintelcom.net> <3A805F53.F5CD60D9@monzoon.net> <20010206124012.V26076@fw.wintelcom.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Alfred Perlstein wrote: > > * Andre Oppermann [010206 12:33] wrote: > > Alfred Perlstein wrote: > > > > > > * Andre Oppermann [010206 12:07] wrote: > > > > > > > > Yes, my understanding of the meaning of "ordered meta-date update" as > > > > I have grasped it from Terry's rants in the past years is not that all > > > > meta-data updates on a filesystem have to be done one-after-the-other > > > > but ordered in respect to each other; That a link() happens before a > > > > unlink() on the same file. Does this make sense? > > > > > > Only when done by a single process or something waits for the link > > > to complete before starting the unlink. If two processes "race" > > > to link and unlink then no. > > > > It is just one process waiting for the link() to complete. And then > > unlink(). After completion a IPC signal is send to another process > > to pick the file up and continue processing. > > Basically, you want a fsync right before the IPC. This should > bring the metadata up to date with what's in-core and you should > then be safe when you reply with your 250 accepted message. Like this (from qmail-queue): ... if (fsync(intdfd) == -1) die_write(); if (link(intdfn,todofn) == -1) die(66); triggerpull(); die(0); } Actually for initial queueing it doesn't even unlink() but leaves it to the next program. Can't be more safe, can it? Conclusion: Qmail is a very fine and well thought out piece of software and facilitates what the BSD API provides for it's very own purpose... -- Andre To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message