[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: ext3 and chattr +S on postfix spools



wietse porcupine org (Wietse Venema) writes:

> open() implements O_CREAT|O_EXCL correctly.
>
> fsync(fd) guarantees no loss of file content or pathname information.
> close() after fsync() is not allowed to break this guarantee.
>
> rename() and link() are synchronous. Some applications also demand
> that the operations be atomic.
>
> rename() is safe: it never loses pathname information no matter
> when the operation is interrupted, and no matter why it fails.
>
> An operation that succeeds never reports failure. That is, no NFS
> garbage with non-idempotent operations.
>
> Postfix does not promise reliable operation over networked file
> systems, thus it has no requirements for network file systems.

This is probably not going to happen in Linux without mount options, it
has not happened in the past. Effectively, these requirements are not
met by *BSD's FFS with softupdates either (rename() and link() are not
synchronous there either).

Andrew, *BSD has - I'm not telling news here - three mount modes,
"async", "noasync" and "sync". noasync is the default, it implies
synchronous meta and directory updates. async is like Linux' async:
guarantee nothing, I'm not sure about sync, I'd need to look into my man
page. FFS softupdates are an addition to guarantee consistent file
system state even with "async" -- and all these bets are off when the
disk drive acknowledges a "write" before the data is on disk
(i. e. write cache enabled voids all these guarantees).

However, Postfix' queue seems to be safe with softupdates, but not
Postfix' maildir delivery, which I find very unfortunate. Postfix should
not put itself under the same artificial restriction that the
unmaintained qmail-1.03 suffers from.

-- 
Matthias Andree

"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."         Benjamin Franklin





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]