Chuck Lever <chuck.lever@xxxxxxxxxx> writes:
If the upper layers are responsible for providing the utsname, you will need to
fix up lockd and the NFS server's callback client too, at least.
Actually looking at the code. It looks like a proper fix may be even simpler.
Why do we have both clnt->cl_server and clnt->cl_nodename? Or is cl_server
the other side of the connection?
What are we trying to achieve by reading utsname?
It looks like it gets copied into the sunrpc messages so I assume it is
a part of the sunrpc spec?
It appears to be used only for RPC's AUTH_SYS credentials. The nodename is used
to identify the caller's host. See RFC 1831, Appendix A:
http://rfclibrary.hosting.com/rfc/rfc1831/rfc1831-16.asp
Thanks that helps a lot.
I'm not terribly familiar with uts namespaces, though. Can someone explain why
we need to distinguish between these for AUTH_SYS if the caller is on a remote
system?
Semantically processes in different uts namespaces are on different machines.
I don't like the idea of an oops in here. Instead, (for now) it should warn and
fail to create the client, IMO.
Which is interesting when the problem happens during NFS unmount. Although
frankly it could fail anyway.
It seems strange that we are creating a client during unmount anyway.