>> For the record, FFS with soft-updates does not guarantee synchronous
>> directory operations; you have to open and fsync() the file you just
>> moved to be sure the operation has been committed to disk. See
>> http://mail-index.netbsd.org/current-users/2000/06/19/0011.html for a
>> little more information.
> Then I was confused. I assumed FFS was like UFS on Solaris, where
> you can "feel" the synchronous directory operations by doing a "rm
> -rf" of anything larger than a few files.
Soft updates are a recent thing. UFS on Solaris does not have them.
Without soft updates, FFS does have synchronous directory operations,
and yes, you will feel the resultant performance limitations.
> If ReiserFS behaved identically to FFS+softupdates, it would not
> need any qmail patches.
I can't really address this issue; I don't know qmail well enough.
> Which to me seems to be a more logical mode of operations: if you
> want the file data sync'd to disk, call fsync on the file; if you
> want the directory, fsync the directory.
Perhaps. There are arguments for either model being simplest, and
history should not be ignored when picking between the two. The
Single Unix Spec v2 also appears to mandate the FFS model, for those
who care about that standard:
The fsync() function forces all currently queued I/O
operations associated with the file indicated by file
descriptor fildes to the synchronised I/O completion
state. All I/O operations are completed as defined for
synchronised I/O file integrity completion.
[and:]
synchronised I/O file integrity completion - Identical to a
synchronised I/O data integrity completion with the addition
that all file attributes relative to the I/O operation
(including access time, modification time, status change time)
will be successfully transferred prior to returning to the
calling process.
[and:]
synchronised I/O data integrity completion - [...] The write
is complete only when the data specified in the write request
is successfully transferred and all file system information
required to retrieve the data is successfully transferred.