> On Mon, 2002-07-15 at 15:13, Patrick J. LoPresti wrote:
>
> > > 1) that newly grown file is someone's inbox, and the old contents of the
> > > new block include someone else's private message.
> > >
> > > 2) That newly grown file is a control file for the application, and the
> > > application expects it to contain valid data within (think sendmail).
> >
> > In a correctly-written application, neither of these things can
> > happen. (See my earlier message today on fsync() and MTAs.) To get a
> > file onto disk reliably, the application must 1) flush the data, and
> > then 2) flush a "validity" indicator. This could be a sequence like:
> >
> > create temp file
> > flush data to temp file
> > rename temp file
> > flush rename operation
>
> Yes, most mtas do this for queue files, I'm not sure how many do it for
> the actual spool file. mail server authors are more than welcome to
Less. For one, Postfix' local(8) daemon relies on synchronous directory
update for Maildir spools. For mbox spool, the problem is less
prevalent, because spool files usually exist already and fsync() is
sufficient (and fsync() is done before local(8) reports success to the
queue manager).
-- Matthias Andree - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/