usr/src/uts/common/fs/nfs/nfs_cmd.c:
197 * First try to find a cached entry. If not successfull,
One 'l' as successful
----
224 if (charset == NULL)
225 /* the slooow way - ask daemon */
226 charset = nfscmd_charmap(exi, sp);
I'd prefer 225 before 224.
-----
276 ASSERT(exi != NULL);
277 ASSERT(sp != NULL);
Handles debug. For production, why not add the following as well:
if (exi == NULL || sp == NULL)
return (NULL);
Actually, this is a major requirement. nfscmd_charmap() used to
handle this without a potential panic. Now it will panic.
---
usr/src/uts/common/fs/nfs/nfs4_srv.c
6067 static nfsstat4
6068 rfs4_lookup(component4 *component, struct svc_req *req,
6069 struct compound_state *cs)
6097 /* If necessary, convert to UTF-8 for illbehaved clients */
6098
6099 ca = (struct sockaddr *)svc_getrpccaller(req->rq_xprt)->buf;
6100 name = nfscmd_convname(ca, cs->exi, nm, NFSCMD_CONV_INBOUND,
6101 MAXPATHLEN + 1);
6102
6103 if (name == NULL) {
So now every lookup will make a call to userland regardless.
What is the performance impact?
Is there a quick check that can be done here to see if we need to make
the call?
Is there a way to cache results or the fact that a cs->exi is known
to be well behaved?
---
BTW: it should be "ill behaved" on 6097