[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