On Sun, Jul 16, 2000 at 06:55:21PM +0200, Jedi/Sector One wrote:
>   ReiserFS does not commit link() synchronously (mounting with "sync"
> doesn't change anything). Therefore, if there is a power outage during
> the Maildir delivery or if qmail-smtpd answered the final "queued"
> message without actually commiting the link in queue/todo, the message
> will not be processed by qmail-send.

Actually, qmail is not "reliable" on any Linux FS.  This was discussed
to death a while back.  It is DJB's view that all directory operations
(creating, removing, linking, etc.) sould be synchronous, just like BSD
does.  It is Linus' view that this is a significant performance penalty
with little gain, since applications that require synchronous directory
operations also tend to require synchronous file operations and other
special file handling.  I agree.

There is also the discussion of ordered meta-data updates (OMDU) vs
unordered (UMDU).  Linux (with the exception of newer journalled file
systems) does UMDU.  With OMDU, the file meta-data (inode, indirect
blocks, etc) is written in an ordered fashion, typically before the
data.  This means FWIR that you can have good meta-data pointing to bad
data in the case of a crash.  With UMDU, you can have bad meta-data but
good data, which is something that a fsck will detect.

Since crashes are so rare, and journalling file systems becoming more
populous, this is rapidly becoming a non-issue.

I wrote a source file that replaces libc's open, link, rename, and
unlink routines with my own that sync the appropriate directory after
executing the syscall but before completing.  Simply linking with it
causes all directory operations executed by the program to become
synchronous.

It is available at http://em.ca/~bruceg/syncdir/  I include it in my
patched qmail RPMs.
-- 
Bruce Guenter <[EMAIL PROTECTED]>                       http://em.ca/~bruceg/

PGP signature

Reply via email to