:> Pre-softupdate BSD semantics, apparently. Doesn't sound like
:> the smartest thing to do when you want a reliable MTA...
:
:This description is not entirely right.
:
:Qmail depends on ordered-metadata updates (Terry! :-). That means
:if you issue a link() to the new place and a unlink() in the old
:place it should guarantee that the link() happens *BEFORE* the
:unlink(). At least standard FFS/UFS does this. Linux ext2 might
:do the the unlink() before the link() and a crash in that moment
:will loose the file completely. It is all about the ordering
:guarantee.
No filesystem can guarentee ordered metadata upates. Well, that
isn't quite true... a journaled filesystem can, but it is usually
undesireable to have a global ordering guarentee for a filesystem
because you can end up in a situation where you have lots of processes
banging on unrelated areas of the filesystem in parallel, and an
fsync() of one descriptor would have to wait for the entire filesystem
to reach a synchronization point to guarentee metadata update ordering.
This creates a serious scaleability issue within a filesystem!
Standard FFS/UFS does *NOT* guarentee ordered metadata updates. It
uses synchronous directory updates for certain operations, but these
only provide guarentees when operating on lightly loaded directories.
Heavily loaded directories can still (and probably will) wind up in a
corrupted state if the system crashes at the wrong time. Dealing with
the issue of multiple processes banging on a single directory all
at the same time, doing simultanious file creates and deletions, is a
very complex problem to solve, and FFS/UFS does not solve it. Softupdates
solves the problem, but even softupdates still doesn't try to guarentee
metadata update ordering because it is extremely difficult to do it and
still have reasonable filesystem performance.
So the simple answer here is that if QMail is relying on ordered metadata
updates, it is relying on something that virtually nobody supports
with any real level of confidence. If you want to achieve a database's
transactional qualities, you need to write meta-data operations to a log
file, cluster the writes within a filesystem block properly, and fsync()
the log file so you can rerun it after a crash.
(I will mention here that, of course, sendmail and postfix are no better
in this regard. This is not a detriment to QMail itself verses other
mailers. Since QMail fsync()'s reasonably, it will be just as reliable
as other existing MTAs).
-Matt
:> If djb could be considered to take things like reliability
:> and the SMTP specification into account, and not just
:> security, then qmail would have the potential to be a pretty
:> decent mailer.
:
:He did and qmail is one of the best and most reliable mailers on
:the Internet.
:
:> As it is, I can only recommend people to go with something
:> like postfix, Exim or zmailer ...
:
:Have a look at the qmail source and the facts before you spill
:out such a *bullshit*!
:
:--
:Andre
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message