On Fri, Aug 28, 2015 at 02:06:12PM -0400, 'J. Bruce Fields' wrote: > On Thu, Aug 27, 2015 at 01:36:38PM -0700, Frank Filz wrote: > > If the creds don't match, the return should be NFS4ERR_CLID_INUSE per > > section 16.34.5. IMPLEMENTATION first bullet after DRC discussion. > > > > At least the way I read RFC 7530... > > I assumed that was only the case when the long-form client-provided > client identifier matched, but here we're looking at records matched by > the shorthand server-generated clientid. Very weird that that we'd get > to this case (and without hitting CLID_INUSE on the setclientid?). > There's something we don't understand. > > Anyway, looking at the SETCLIENTID_CONFIRM description in 7530, I think > you're right, they're recommending CLIDN_INUSE for this case. Doubt > that would actually help in Ulrich's case, though. May as well fix that anyway, I guess.--b. commit 3d70e158ea9b Author: J. Bruce Fields <bfields@xxxxxxxxxx> Date: Tue Sep 1 13:40:53 2015 -0400 nfsd: return CLID_INUSE for unexpected SETCLIENTID_CONFIRM case Somebody with a Solaris client was hitting this case. We haven't figured out why yet, and don't have a reproducer. Meanwhile Frank noticed that RFC 7530 actually recommends CLID_INUSE for this case. Unlikely to help the original reporter, but may as well fix it. Reported-by: Frank Filz <ffilzlnx@xxxxxxxxxxxxxx> Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 416f32e34a33..08746ec1d44a 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -3111,10 +3111,11 @@ nfsd4_setclientid_confirm(struct svc_rqst *rqstp, /* * We try hard to give out unique clientid's, so if we get an * attempt to confirm the same clientid with a different cred, - * there's a bug somewhere. Let's charitably assume it's our - * bug. + * the client may be buggy; this should never happen. + * + * Nevertheless, RFC 7530 recommends INUSE for this case: */ - status = nfserr_serverfault; + status = nfserr_clid_inuse; if (unconf && !same_creds(&unconf->cl_cred, &rqstp->rq_cred)) goto out; if (conf && !same_creds(&conf->cl_cred, &rqstp->rq_cred)) -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html