Linux NFS client issues with servers that are old or not widely used
should be reported to linux-nfs@vger.kernel.org (thanks for
forwarding this, Andrew).
User space servers are usually not tested with NFS client changes,
since their use is infrequent compared with Solaris, NetApp filers,
and the Linux knfsd (and several others). We have to draw the line
somewhere to make NFS client development a manageable process.
It's likely the NFS client team is not aware of problems with these
servers simply because none of us run them, and nothing has been
reported so far.
An EINVAL return is fairly generic, but since it is coming from the
reply path on the client, that probably indicates that decoding the
reply failed somehow. That could be a client problem, or the server
reply was incorrect or corrupt.
More specific information about the problem is needed. Could we see
a wire trace? A raw tcpdump or tethereal dump captured during the
problematic interaction would be helpful. Maybe even an strace of
the failing application would tell us what the arguments for the
setattr() call are. And what are your mount options, especially
which NFS version? (cat /proc/mounts)
Have you tried a 'git bisect' or something similar to track down
exactly when client behavior changed?
If NFS servers don't conform to the NFS protocol specification, then
it's unlikely that the NFS client will be changed to fix such
issues. Ie: server bugs need to be fixed on the server. That is
sometimes difficult if the server is not maintained, for instance.
Report the problems on the linux-nfs@vger.kernel.org mailing list, or
document them in the official bug databases (either the Linux kernel
bugzilla or the NFSv4 bug tracker at http://bugzilla.linux-nfs.org/
The general policy is that if a server behaves in ways that don't
conform to the NFS spec, then the Linux NFS client probably won't
work with it. If the client works with a broken server today, there
is no guarantee that it will continue to work.
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
--