[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-next
Subject:    Re: [PATCH] nfs41: get rid of unused struct nfs41_exchange_id_res
From:       Trond Myklebust <trond.myklebust () fys ! uio ! no>
Date:       2009-05-05 19:34:13
Message-ID: 1241552053.5174.44.camel () heimdal ! trondhjem ! org
[Download RAW message or body]

On Fri, 2009-05-01 at 23:14 +0300, Benny Halevy wrote:
> struct nfs41_exchange_id_res is currently allocated on the stack
> insanely taking over 2K of stack space due to the NFS4_OPAQUE_LIMIT (1K(
> byte arrays embedded in server_owner and server_scope.
> Since these are not in use yet, this patch gets rid of them for the
> time being.
> 
> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
> ---
>  fs/nfs/nfs4xdr.c        |   27 ++++++++++++++-------------
>  include/linux/nfs_xdr.h |    3 ---
>  2 files changed, 14 insertions(+), 16 deletions(-)
> 
> diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
> index 80af0ae..3350d19 100644
> --- a/fs/nfs/nfs4xdr.c
> +++ b/fs/nfs/nfs4xdr.c
> @@ -4185,8 +4185,8 @@ static int decode_delegreturn(struct xdr_stream *xdr)
>  static int decode_exchange_id(struct xdr_stream *xdr,
>  			      struct nfs41_exchange_id_res *res)
>  {
> -	uint32_t *p;
> -	int status, dummy;
> +	uint32_t *p, dummy;
> +	int status;
>  	struct nfs_client *clp = res->client;
>  
>  	status = decode_op_hdr(xdr, OP_EXCHANGE_ID);
> @@ -4204,25 +4204,26 @@ static int decode_exchange_id(struct xdr_stream *xdr,
>  	if (dummy != SP4_NONE)
>  		return -EIO;
>  
> -	/* minor_id */
> +	/* Throw away minor_id */
>  	READ_BUF(8);
> -	READ64(res->server_owner.minor_id);
> +	p += 8;
         ^^^^^^^^ Err... This isn't the same thing at all!

You're suddenly skipping 10=words instead of the original 2. READ_BUF()
will already take care of updating the 'p' pointer.

>  
> -	/* Major id */
> +	/* Throw away Major id */
>  	READ_BUF(4);
> -	READ32(res->server_owner.major_id_sz);
> -	READ_BUF(res->server_owner.major_id_sz);
> -	COPYMEM(res->server_owner.major_id, res->server_owner.major_id_sz);
> +	READ32(dummy);
> +	READ_BUF(dummy);
> +	p += XDR_QUADLEN(dummy);
         ^^^^^^^^^^^^^^^^^^^^^^^^^ Ditto. You're skipping 2*dummy words.

>  
> -	/* server_scope */
> +	/* Throw away server_scope */
>  	READ_BUF(4);
> -	READ32(res->server_scope.server_scope_sz);
> -	READ_BUF(res->server_scope.server_scope_sz);
> -	COPYMEM(res->server_scope.server_scope,
> -		res->server_scope.server_scope_sz);
> +	READ32(dummy);
> +	READ_BUF(dummy);
> +	p += XDR_QUADLEN(dummy);
          ^^^^^^^^^^^^^^^^^^^^^^^^ Ditto

> +
>  	/* Throw away Implementation id array */
>  	READ_BUF(4);
>  	READ32(dummy);
> +	READ_BUF(dummy);
>  	p += XDR_QUADLEN(dummy);
          ^^^^^^^^^^^^^^^^^^^^^^^^ Ditto

>  
>  	return 0;
> diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
> index 071a6d1..62f63fb 100644
> --- a/include/linux/nfs_xdr.h
> +++ b/include/linux/nfs_xdr.h
> @@ -925,9 +925,6 @@ struct server_scope {
>  struct nfs41_exchange_id_res {
>  	struct nfs_client		*client;
>  	u32				flags;
> -	struct server_owner		server_owner;
> -	struct server_scope		server_scope;
> -	struct nfs_impl_id4		impl_id;
>  };
>  
>  struct nfs41_create_session_args {


--
To unsubscribe from this list: send the line "unsubscribe linux-next" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic