[pnfs] [PATCH 2/2] Update server create session to draft 13 linux-pnfs-2.6-latest
andros at umich.edu
andros at umich.edu
Thu Sep 13 14:54:29 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 | 37 +++++++++++--------------------------
include/linux/nfsd/state.h | 2 ++
include/linux/nfsd/xdr4.h | 2 +-
4 files changed, 15 insertions(+), 27 deletions(-)
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index fb4f72a..5af358d 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -437,6 +437,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 6807ad8..dba71f1 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1036,36 +1036,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);
@@ -1082,7 +1065,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);
@@ -3100,15 +3084,15 @@ nfsd4_encode_create_session(struct nfsd4_compoundres *resp, int nfserr, struct n
ENCODE_HEAD;
if (!nfserr) {
- RESERVE_SPACE(32);
+ RESERVE_SPACE(28);
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);
@@ -3126,7 +3110,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 6be2158..90d7ca2 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -119,6 +119,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;
@@ -160,6 +161,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 44faa2a..a0abc15 100644
--- a/include/linux/nfsd/xdr4.h
+++ b/include/linux/nfsd/xdr4.h
@@ -370,6 +370,7 @@ struct nfsd4_exchange_id {
};
struct nfsd4_channel {
+ u32 headerpadsz;
u32 maxreq_sz;
u32 maxresp_sz;
u32 maxresp_cached;
@@ -384,7 +385,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