Bruce, this patch should go upstream. Thanks, Benny On Jun. 17, 2010, 19:01 -0400, Benny Halevy <bhalevy@xxxxxxxxxxx> wrote: > The client may send an EXCHANGE_ID and a following CREATE_SESSION for an > existing clientid. In this case we'll find the nfs4_client in the confirmed > list. > > Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> > --- > fs/nfsd/nfs4state.c | 24 +++++++++++------------- > 1 files changed, 11 insertions(+), 13 deletions(-) > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index 3e012d4..0df5483 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -1405,25 +1405,23 @@ nfsd4_create_session(struct svc_rqst *rqstp, > if (is_ds_only_session(unconf->cl_exchange_flags)) > cr_ses->flags &= ~SESSION4_BACK_CHAN; > > - if (cr_ses->flags & SESSION4_BACK_CHAN) { > - unconf->cl_cb_conn.cb_xprt = rqstp->rq_xprt; > - svc_xprt_get(rqstp->rq_xprt); > - rpc_copy_addr( > - (struct sockaddr *)&unconf->cl_cb_conn.cb_addr, > - sa); > - unconf->cl_cb_conn.cb_addrlen = svc_addr_len(sa); > - unconf->cl_cb_conn.cb_minorversion = > - cstate->minorversion; > - unconf->cl_cb_conn.cb_prog = cr_ses->callback_prog; > - unconf->cl_cb_seq_nr = 1; > - nfsd4_probe_callback(unconf, &unconf->cl_cb_conn); > - } > conf = unconf; > } else { > status = nfserr_stale_clientid; > goto out; > } > > + if (cr_ses->flags & SESSION4_BACK_CHAN) { > + conf->cl_cb_conn.cb_xprt = rqstp->rq_xprt; > + svc_xprt_get(rqstp->rq_xprt); > + rpc_copy_addr((struct sockaddr *)&conf->cl_cb_conn.cb_addr, sa); > + conf->cl_cb_conn.cb_addrlen = svc_addr_len(sa); > + conf->cl_cb_conn.cb_minorversion = cstate->minorversion; > + conf->cl_cb_conn.cb_prog = cr_ses->callback_prog; > + conf->cl_cb_seq_nr = 1; > + nfsd4_probe_callback(conf, &conf->cl_cb_conn); > + } > + > /* > * We do not support RDMA or persistent sessions > */ -- 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