Hello,
I just tried Exim 4.24 on Linux 2.6.0-test6 as NFS client. Out of the
box, Exim fails to fsync the spool directory, thus not working at all.
Editing os.h-Linux helps:
#undef NEED_SYNC_DIRECTORY
As it seems, with 2.6 NFS does no longer support fsync on directories,
whereas ext2 still does. Linux 2.6 offers two new mechanisms: chattr
+D on directories and the dirsync mount option. I don't know if using them
on the NFS server helps, though.
I suggest a comment in os.h-Linux telling the above:
/* Undef this with Linux 2.6 and spool on NFS, check chattr +D and */
/* dirsync mount options. */
That gives at least a clue to people who investigate why their MTA
suddenly broke. Any opinions if EINVAL on fsync() should be ignored
by Exim? The code can only perform a best effort anyway.
Personally, I can not but wonder how anybody could interpret "comitting to
stable storage" as "committed, but not retrievable after crash". Some not
so nice answers come to mind, but we don't want to get off-topic, do we? ;)
Michael