[pnfs] [PATCH 5/5] Update server create session to draft 13

andros at umich.edu andros at umich.edu
Tue Sep 11 15:56:13 EDT 2007


From: Andy Adamson <andros at umich.edu>

Move header padding to the channel attrs.
Remove conn bindings.

Signed off by: Andy Adamson<andros at umich.edu>
---
 fs/nfsd/nfs4state.c        |    1 +
 fs/nfsd/nfs4xdr.c          |   35 ++++++++++-------------------------
 include/linux/nfsd/state.h |    2 ++
 include/linux/nfsd/xdr4.h  |    2 +-
 4 files changed, 14 insertions(+), 26 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index b364707..86caf64 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -428,6 +428,7 @@ alloc_init_session(struct nfs4_client *clp, struct nfsd4_create_session *cses)
 	new->se_flags = cses->flags;
 
 	/* for now, accept the client values */
+	new->se_fheaderpad_sz = cses->fore_channel.headerpadsz;
 	new->se_fmaxreq_sz = cses->fore_channel.maxreq_sz;
 	new->se_fmaxresp_sz = cses->fore_channel.maxresp_sz;
 	new->se_fmaxresp_cached = cses->fore_channel.maxresp_cached;
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index b77258e..10ef92f 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1007,36 +1007,19 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, struct nfsd4_create
 {
 	DECODE_HEAD;
 
-	u32 dummy, len;
+	u32 dummy;
 	char *machine_name;
 	int i;
 	int nr_secflavs;
 
-	READ_BUF(20);
+	READ_BUF(16);
 	COPYMEM(&sess->clientid, 8);
 	READ32(sess->seqid);
 	READ32(sess->flags);
-	READ32(sess->header_padding);
-
-	/* conn_binding4args */
-	READ_BUF(4); /* cba_enforce */
-	READ32(dummy);
-	if (dummy) {
-		/* skip sec_oid4s */
-		dprintk("cba_enforce = 1 not supported! Skip OID\n");
-		READ_BUF(4);
-		READ32(dummy); /* number of sec_oid4 */
-		for (i = 0; i < dummy; i++) {
-			READ_BUF(4);
-			READ32(len); /* number of sec_oid4 */
-			dprintk("%s skip oid of len %d\n",__FUNCTION__,len);
-			READ_BUF(len);
-			p += XDR_QUADLEN(len);
-		}
-	}
 
 	/* Fore channel attrs */
-	READ_BUF(20);
+	READ_BUF(24);
+	READ32(sess->fore_channel.headerpadsz);
 	READ32(sess->fore_channel.maxreq_sz);
 	READ32(sess->fore_channel.maxresp_sz);
 	READ32(sess->fore_channel.maxresp_cached);
@@ -1053,7 +1036,8 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, struct nfsd4_create
 	}
 
 	/* Back channel attrs */
-	READ_BUF(20);
+	READ_BUF(24);
+	READ32(sess->back_channel.headerpadsz);
 	READ32(sess->back_channel.maxreq_sz);
 	READ32(sess->back_channel.maxresp_sz);
 	READ32(sess->back_channel.maxresp_cached);
@@ -2838,11 +2822,11 @@ nfsd4_encode_create_session(struct nfsd4_compoundres *resp, int nfserr, struct n
                 WRITEMEM(sess->sessionid, sizeof(sess->sessionid));
                 WRITE32(sess->seqid);
                 WRITE32(sess->flags);
-                WRITE32(sess->header_padding);
                 WRITE32(0);
                 ADJUST_ARGS();
 
-                RESERVE_SPACE(20);
+                RESERVE_SPACE(24);
+                WRITE32(sess->fore_channel.headerpadsz);
                 WRITE32(sess->fore_channel.maxreq_sz);
                 WRITE32(sess->fore_channel.maxresp_sz);
                 WRITE32(sess->fore_channel.maxresp_cached);
@@ -2860,7 +2844,8 @@ nfsd4_encode_create_session(struct nfsd4_compoundres *resp, int nfserr, struct n
                         ADJUST_ARGS();
                 }
 
-                RESERVE_SPACE(20);
+                RESERVE_SPACE(24);
+                WRITE32(sess->back_channel.headerpadsz);
                 WRITE32(sess->back_channel.maxreq_sz);
                 WRITE32(sess->back_channel.maxresp_sz);
                 WRITE32(sess->back_channel.maxresp_cached);
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
index d6b5287..7de62ac 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -118,6 +118,7 @@ struct nfs4_callback {
  * for both forward and back channels
  */
 struct nfs41_channel {
+	u32	ch_headerpad_sz;
 	u32     ch_maxreq_sz;
 	u32     ch_maxresp_sz;
 	u32     ch_maxresp_cached;
@@ -159,6 +160,7 @@ struct nfs41_session {
 	struct nfs41_slot       *se_slots;      /* forward channel slots */
 };
 
+#define se_fheaderpad_sz       se_forward.ch_headerpad_sz
 #define se_fmaxreq_sz          se_forward.ch_maxreq_sz
 #define se_fmaxresp_sz         se_forward.ch_maxresp_sz
 #define se_fmaxresp_cached     se_forward.ch_maxresp_cached
diff --git a/include/linux/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h
index 5a9ca06..f085c53 100644
--- a/include/linux/nfsd/xdr4.h
+++ b/include/linux/nfsd/xdr4.h
@@ -351,6 +351,7 @@ struct nfsd4_exchange_id {
 };
 
 struct nfsd4_channel {
+	u32             headerpadsz;
         u32             maxreq_sz;
         u32             maxresp_sz;
         u32             maxresp_cached;
@@ -365,7 +366,6 @@ struct nfsd4_create_session {
 	nfs41_sessionid         sessionid;
 	u32                     seqid;
 	u32			flags;
-	u32                     header_padding;
 	struct nfsd4_channel    fore_channel;
 	struct nfsd4_channel    back_channel;
 	u32                     callback_prog;
-- 
1.5.0.2



More information about the pNFS mailing list