[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