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