[pnfs] [PATCH] Removed sessions hard-coded 32678 byte max sizes

Iyer, Rahul Rahul.Iyer at netapp.com
Fri Mar 16 12:44:35 EDT 2007


Btw, isn't largeio part of the mainline now? 
Regards
Rahul

> -----Original Message-----
> From: William A. (Andy) Adamson [mailto:andros at citi.umich.edu] 
> Sent: Friday, March 16, 2007 8:12 AM
> To: pnfs at linux-nfs.org
> Subject: Re: [pnfs] [PATCH] Removed sessions hard-coded 32678 
> byte max sizes
> 
> if there are no objections - i will apply this patch.
> 
> -->Andy
> 
> 
> On 3/15/07, Andy Adamson <andros at umich.edu > wrote:
> 
> 	Client: replace fore and back channel 32768 
> max_rqst_sz, max_resp_sz, and
> 	max_resp_sz_cached with NFS_MAX_FILE_IO_SIZE.
> 	
> 	Server: use svc_max_payload(rqstp) to set fore and back 
> channel sizes
> 	
> 	NOTE: This is really sessions branch code - but is 
> dependant on the largeio
> 	patch in the pNFS branch. We decided to leave it in the 
> pNFS branch. 
> 	---
> 	fs/nfs/nfs4xdr.c    |   12 ++++++------
> 	fs/nfsd/nfs4state.c |    9 +++++++++
> 	2 files changed, 15 insertions(+), 6 deletions(-)
> 	
> 	diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
> 	index f2a5c21..4f18c2f 100644 
> 	--- a/fs/nfs/nfs4xdr.c
> 	+++ b/fs/nfs/nfs4xdr.c
> 	@@ -1498,18 +1498,18 @@ static int 
> encode_create_session(struct xdr_stream *xdr, struct nfs41_create_ses
> 	        RESERVE_SPACE(2*28);                    /* 2 
> channel_attrs */ 
> 	
> 	        /* Fore Channel */
> 	-       WRITE32(32768);                         /* max 
> req size */
> 	-       WRITE32(32768);                         /* max 
> resp size */
> 	-       WRITE32(32768);                         /* Max 
> resp size cached */ 
> 	+       WRITE32(NFS_MAX_FILE_IO_SIZE);          /* max 
> req size */
> 	+       WRITE32(NFS_MAX_FILE_IO_SIZE);          /* max 
> resp size */
> 	+       WRITE32(NFS_MAX_FILE_IO_SIZE);          /* Max 
> resp size cached */
> 	        WRITE32(RPC_DEF_SLOT_TABLE);            /* max 
> operations */
> 	        WRITE32(RPC_DEF_SLOT_TABLE);            /* max 
> requests */
> 	        WRITE32(0);                             /* 
> Streamchannel attrs */
> 	        WRITE32(0);                             
> /*rdmachannel_attrs */ 
> 	
> 	        /* Back Channel */
> 	-       WRITE32(32768);                         /* max 
> req size */
> 	-       WRITE32(32768);                         /* max 
> resp size */
> 	-       WRITE32(32768);                         /* Max 
> resp size cached */ 
> 	+       WRITE32(NFS_MAX_FILE_IO_SIZE);          /* max 
> req size */
> 	+       WRITE32(NFS_MAX_FILE_IO_SIZE);          /* max 
> resp size */
> 	+       WRITE32(NFS_MAX_FILE_IO_SIZE);          /* Max 
> resp size cached */
> 	        WRITE32(RPC_DEF_SLOT_TABLE);            /* max 
> operations */
> 	        WRITE32(RPC_DEF_SLOT_TABLE);            /* max 
> requests */
> 	        WRITE32(0);                             /* 
> Streamchannel attrs */
> 	diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c 
> 	index 43fa8ff..259228f 100644
> 	--- a/fs/nfsd/nfs4state.c
> 	+++ b/fs/nfsd/nfs4state.c
> 	@@ -74,6 +74,8 @@ static stateid_t onestateid;          
>     /* bits all 1 */
> 	#define ZERO_STATEID(stateid) (!memcmp((stateid), 
> &zerostateid, sizeof(stateid_t))) 
> 	#define ONE_STATEID(stateid)  (!memcmp((stateid), 
> &onestateid, sizeof(stateid_t)))
> 	
> 	+extern __u32 svc_max_payload(const struct svc_rqst *rqstp);
> 	+
> 	/* forward declarations */
> 	static struct nfs4_stateid * find_stateid(stateid_t 
> *stid, int flags); 
> 	static struct nfs4_delegation * 
> find_delegation_stateid(struct inode *ino, stateid_t *stid);
> 	@@ -1253,6 +1255,7 @@ int nfsd4_create_session(struct 
> svc_rqst *rqstp, struct nfsd4_create_session *se
> 	{
> 	        u32 ip_addr = rqstp->rq_addr.sin_addr.s_addr; 
> 	        struct nfs4_client *conf, *unconf;
> 	+       __u32   max_blocksize = svc_max_payload(rqstp);
> 	        int status = 0;
> 	
> 	        if (STALE_CLIENTID(&session->clientid))
> 	@@ -1302,6 +1305,12 @@ int nfsd4_create_session(struct 
> svc_rqst *rqstp, struct nfsd4_create_session *se 
> 	out_replay:
> 	        memcpy(session->sessionid, conf->cl_sessionid, 16);
> 	        session->seqid = conf->cl_seqid;
> 	+       session->fore_channel.maxreq_sz = max_blocksize;
> 	+       session->fore_channel.maxresp_sz = max_blocksize; 
> 	+       session->fore_channel.maxresp_cached = max_blocksize;
> 	+       session->back_channel.maxreq_sz = max_blocksize;
> 	+       session->back_channel.maxresp_sz = max_blocksize;
> 	+       session->back_channel.maxresp_cached = max_blocksize; 
> 	out:
> 	        nfs4_unlock_state();
> 	        dprintk("%s returns %d %d\n", __FUNCTION__, 
> status, ntohl(status));
> 	--
> 	1.5.0.2
> 	
> 	
> 
> 
> 


More information about the pNFS mailing list