[pnfs] [PATCH] Get NFSv4 client to work with NFSv4.1 server.
Marc Eshel
eshel at almaden.ibm.com
Thu Aug 23 20:06:06 EDT 2007
From: Marc Eshel <eshel at almaden.ibm.com>
---
fs/nfsd/nfs4proc.c | 15 +++++++++++++--
include/linux/nfsd/state.h | 1 +
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index f90ea73..89eaeef 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -219,8 +219,18 @@ do_open_fhandle(struct svc_rqst *rqstp,
static void
nfsd41_set_clientid(clientid_t *clid, struct current_session *cses)
{
- clid->cl_boot = cses->cs_sid.clientid.cl_boot;
- clid->cl_id = cses->cs_sid.clientid.cl_id;
+ dprintk("nfsd41_set_clientid ver %d clid %08x/%08x csid %08x/%08x\n",
+ cses->cs_version, clid->cl_boot, clid->cl_id,
+ cses->cs_sid.clientid.cl_boot,
+ cses->cs_sid.clientid.cl_id);
+ if (cses->cs_version > 0) {
+ clid->cl_boot = cses->cs_sid.clientid.cl_boot;
+ clid->cl_id = cses->cs_sid.clientid.cl_id;
+ }
+ else {
+ cses->cs_sid.clientid.cl_boot = clid->cl_boot;
+ cses->cs_sid.clientid.cl_id = clid->cl_id;
+ }
}
static inline int
@@ -1133,6 +1143,7 @@ #if defined(CONFIG_NFSD_V4_1)
current_ses = kzalloc(sizeof(*current_ses), GFP_KERNEL);
if (current_ses == NULL)
goto out;
+ current_ses->cs_version = args->minorversion;
#endif
resp->xbuf = &rqstp->rq_res;
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
index d6b5287..e6816df 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -180,6 +180,7 @@ nfs41_get_session(struct nfs41_session *
struct current_session {
nfsd_sessionid_t cs_sid;
+ u32 cs_version;
struct nfs41_slot *cs_slot;
};
More information about the pNFS
mailing list