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

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


From: Andy Adamson <andros at umich.edu>

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

Signed off by: Andy Adamson<andros at umich.edu>
---
 fs/nfs/nfs4proc.c              |    2 +-
 fs/nfs/nfs4xdr.c               |   29 ++++++++++-------------------
 include/linux/nfs41_sessions.h |    2 +-
 include/linux/nfs_xdr.h        |    1 -
 4 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 5176cde..17c4ab6 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -4633,6 +4633,7 @@ void nfs4_init_channel_attrs(struct nfs4_client *clp,
 				struct nfs4_channel_attrs *bc_attrs)
 {
 	/* XXX: We need to have good values here... 32K is a wild guess */
+	fc_attrs->headerpadsz = bc_attrs->headerpadsz = 0;
 	fc_attrs->max_rqst_sz = bc_attrs->max_rqst_sz = NFS_MAX_FILE_IO_SIZE;
 	fc_attrs->max_resp_sz = bc_attrs->max_resp_sz = NFS_MAX_FILE_IO_SIZE;
 	fc_attrs->max_resp_sz_cached = bc_attrs->max_resp_sz_cached = NFS_MAX_FILE_IO_SIZE;
@@ -4674,7 +4675,6 @@ int _nfs4_proc_create_session(struct nfs4_client *clp, struct nfs4_session *sess
 	struct nfs41_create_session_args args = {
 		.client = clp,
 		.session= session,
-		.header_padding = 0,
 		.cb_program = NFS4_CALLBACK,
 	};
 
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 789d03a..fafed0a 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -1504,14 +1504,13 @@ static int encode_create_session(struct xdr_stream *xdr, struct nfs41_create_ses
 	RESERVE_SPACE(8);
 	WRITE64(args->client->cl_clientid);
 
-	RESERVE_SPACE(16);
+	RESERVE_SPACE(8);
 	WRITE32(args->client->cl_session->seqid);       /*Sequence id */
 	WRITE32(args->flags);                         	/*flags */
-	WRITE32(args->header_padding);                  /* Header padding */
-	WRITE32(0);                                    /*conn_binding4args */
 
-	RESERVE_SPACE(2*24);                    /* 2 channel_attrs */
+	RESERVE_SPACE(2*28);                    /* 2 channel_attrs */
 	/* Fore Channel */
+	WRITE32(args->fc_attrs.headerpadsz);	/* header padding size */
 	WRITE32(args->fc_attrs.max_rqst_sz);	/* max req size */
 	WRITE32(args->fc_attrs.max_resp_sz);	/* max resp size */
 	WRITE32(args->fc_attrs.max_resp_sz_cached);	/* Max resp sz cached */
@@ -1520,6 +1519,7 @@ static int encode_create_session(struct xdr_stream *xdr, struct nfs41_create_ses
 	WRITE32(0);                             /*rdmachannel_attrs */
 
 	/* Back Channel */
+	WRITE32(args->fc_attrs.headerpadsz);	/* header padding size */
 	WRITE32(args->bc_attrs.max_rqst_sz);	/* max req size */
 	WRITE32(args->bc_attrs.max_resp_sz);	/* max resp size */
 	WRITE32(args->bc_attrs.max_resp_sz_cached);	/* Max resp sz cached */
@@ -5072,7 +5072,6 @@ static int decode_create_session(struct xdr_stream *xdr, struct nfs41_create_ses
 {
 	uint32_t *p;
 	int status;
-	u32 cbr_enforce;
 	u32 nr_attrs;
 
 	struct nfs4_session *session = res->session;
@@ -5086,24 +5085,15 @@ static int decode_create_session(struct xdr_stream *xdr, struct nfs41_create_ses
 	READ_BUF(NFS4_MAX_SESSIONID_LEN);
 	COPYMEM(&session->sess_id, NFS4_MAX_SESSIONID_LEN);
 
-	/* seqid, flags, header padding */
-	READ_BUF(12);
+	/* seqid, flags */
+	READ_BUF(8);
 	READ32(session->seqid);
 	READ32(session->flags);
-	READ32(session->header_padding);
-
-	/* conn_binding4res */
-	READ_BUF(4);
-	READ32(cbr_enforce);
-	if (cbr_enforce) {
-		READ_BUF(8);
-		READ32(session->hash_alg);
-		READ32(session->ssv_len);
-	}
 
 	/* Channel attributes */
 	/* fore channel */
-	READ_BUF(20);
+	READ_BUF(24);
+	READ32(session->fore_channel.chan_attrs.headerpadsz);
 	READ32(session->fore_channel.chan_attrs.max_rqst_sz);
 	READ32(session->fore_channel.chan_attrs.max_resp_sz);
 	READ32(session->fore_channel.chan_attrs.max_resp_sz_cached);
@@ -5117,7 +5107,8 @@ static int decode_create_session(struct xdr_stream *xdr, struct nfs41_create_ses
 	}
 
 	/* back channel */
-	READ_BUF(20);
+	READ_BUF(24);
+	READ32(session->fore_channel.chan_attrs.headerpadsz);
 	READ32(session->back_channel.chan_attrs.max_rqst_sz);
 	READ32(session->back_channel.chan_attrs.max_resp_sz);
 	READ32(session->back_channel.chan_attrs.max_resp_sz_cached);
diff --git a/include/linux/nfs41_sessions.h b/include/linux/nfs41_sessions.h
index 591f829..470c6fb 100644
--- a/include/linux/nfs41_sessions.h
+++ b/include/linux/nfs41_sessions.h
@@ -12,6 +12,7 @@ typedef u32			streamchannel_attrs;
 typedef u32			rdmachannel_attrs;
 
 struct nfs4_channel_attrs {
+	u32			headerpadsz;
 	u32			max_rqst_sz;
 	u32			max_resp_sz;
 	u32			max_resp_sz_cached;
@@ -45,7 +46,6 @@ struct nfs4_session {
 	u32				seqid;	/* The seqid returned by 
 						   exchange_id */
 	u32				flags;
-	u32				header_padding;
 	u32				hash_alg;
 	u32				ssv_len;
 
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 2229fc5..cfe424b 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -800,7 +800,6 @@ struct nfs41_create_session_args {
 	struct nfs4_client *		client;
 	struct nfs4_session *		session;
 	uint32_t			flags;
-	uint32_t			header_padding;
 	uint32_t			cb_program;
 	struct nfs4_channel_attrs	fc_attrs;	/* Fore Channel */
 	struct nfs4_channel_attrs	bc_attrs;	/* Back Channel */
-- 
1.5.0.2



More information about the pNFS mailing list