In article <8828.1021370935@???>,
David Woodhouse <dwmw2@???> wrote: >ph10@??? said:
>> Are there any Linux file system experts out there? Care to comment on
>> this? Should Exim ignore the "invalid argument" error, and assume that
>> that it means "directory is NFS-mounted, you can do no more"?
I think so - EINVAL in this case probably means something like
operation not supported.
>fsync() on an NFS directory should be a NOP under Linux -- I don't even want
>to think about the possibility of it being otherwise. Hence it should
>probably return zero instead of -EINVAL.
It's not the VFS that checks this, it's the filesystem itself. It
may well be possible that the UFS filesystem driver doesn't support fsync()
on a directory either, but that it does sync the directory data when
you fsync() the file.
>In general, I would think that it's best for Exim to assume that an error
>return from fsync() meant that something went wrong, not that operations are
>synchronous and the fsync() was unnecessary. Although the latter is
>(currently) the case for the linux NFS client, it should probably be fixed.
I'm not sure. You'd have to check and fix all filesystems supported
by Linux, as it is a filesystem issue, not a Linux VFS issue.
I think Philips suggestion of ignoring EINVAL but barfing on other
errors is the most workable one. Right now for some people upgrading
from 3.x to 4.x would be impossible otherwise.
Mike.
--
"Insanity -- a perfectly rational adjustment to an insane world."
- R.D. Lang