Hi Tom, On 03/02/10 11:16 -0600, Tom Haynes wrote: > usr/src/uts/common/fs/nfs/nfs_cmd.c: > > 197 * First try to find a cached entry. If not successfull, > > > One 'l' as successful > fixed
> ---- > > 224 if (charset == NULL) > 225 /* the slooow way - ask daemon */ > 226 charset = nfscmd_charmap(exi, sp); > > I'd prefer 225 before 224. > done > ----- > > 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. > Asserts substituted by if condition and moved to nfscmd_findmap() as suggested by Rob. > > --- > > > 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? > Already answered by Rob. > --- > > BTW: it should be "ill behaved" on 6097 > fixed. Thanks for your comments! Please, see new revision of webrev: http://cr.opensolaris.org/~jkryl/nfs-utf8-3/ -jan