On 17.2.2007, at 1.01, Dan Price wrote:
Timo-- why is mmap_disable so important for NFS?
Because another computer may have modified the file on the server,
and if I just access the mmap()ed memory area it doesn't notice the
changes. Also another reason is that the process may die with SIGBUS
in case the file was deleted from the server.
I have been thinking that dovecot should auto-sense the filesystem the various files live on, and adapt its behavior-- (for example, in our environment I've added a "don't bother to fsync on ZFS" patch). Many environments are mixes of NFS and other FS's, as in Jeff's case, so being able to auto-sense and customize behavior would probably be a big win.
There is actually a NFS check nowadays, and if it notices that you're
using NFS but mmap_disable=no, it logs an error:
i_fatal("Mailbox indexes in %s are in NFS mount. "
"You must set mmap_disable=yes to avoid index corruptions. "
"If you're sure this check was wrong, set nfs_check=no.", path);
This is done only for the first user that logs in after startup. I'm
not sure if it's a good idea to automatically change any settings
based on the detection.
And I don't think the fsync behavior is all that different with ZFS
than with other FSes :)