All of lore.kernel.org
 help / color / mirror / Atom feed
From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Benny Halevy <bhalevy@panasas.com>,
	NFS list <linux-nfs@vger.kernel.org>,
	pNFS Mailing List <pnfs@linux-nfs.org>,
	Chuck Lever <chucklever@gmail.com>
Subject: Re: [PATCH 7/7] nfsd: nfs4xdr decode_stateid helper function
Date: Wed, 13 Aug 2008 13:59:09 -0400	[thread overview]
Message-ID: <1218650349.9042.20.camel@localhost> (raw)
In-Reply-To: <20080813150329.GF21004@fieldses.org>

On Wed, 2008-08-13 at 11:03 -0400, J. Bruce Fields wrote:
> On Wed, Aug 13, 2008 at 10:31:54AM +0300, Benny Halevy wrote:
> > On Aug. 12, 2008, 22:04 +0300, "J. Bruce Fields" <bfields@fieldses.org> wrote:
> > > On Tue, Aug 12, 2008 at 08:46:18PM +0300, Benny Halevy wrote:
> > >> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
> > >> ---
> > >>  fs/nfsd/nfs4xdr.c |   99 +++++++++++++++++++++++++++++-----------------------
> > >>  1 files changed, 55 insertions(+), 44 deletions(-)
> > >>
> > >> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> > >> index 47ac498..9570b1b 100644
> > >> --- a/fs/nfsd/nfs4xdr.c
> > >> +++ b/fs/nfsd/nfs4xdr.c
> > >>  static __be32
> > >> @@ -929,9 +939,10 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write)
> > >>  	int len;
> > >>  	DECODE_HEAD;
> > >>  
> > >> -	READ_BUF(sizeof(stateid_opaque_t) + 20);
> > >> -	READ32(write->wr_stateid.si_generation);
> > >> -	COPYMEM(&write->wr_stateid.si_opaque, sizeof(stateid_opaque_t));
> > >> +	status = nfsd4_decode_stateid(argp, &write->wr_stateid);
> > >> +	if (status)
> > >> +		return status;
> > >> +	READ_BUF(16);
> > > 
> > > How did that 20 become a 16?
> > 
> > It was sizeof(stateid_opaque_t) + 20 == sizeof(stateid_t) - 4 + 20 ==
> > sizeof(stateid_t) + 16.
> 
> Whoops!  Even now I still fall into the stateid_opaque_t/stateid_t trap!

Which is a good reason for ditching the entire confusing typedef, and
replacing it with a packed structure instead:

struct stateid {
	__be32 generation;
	char opaque[12];
} __attribute__((packed));

Trond


  reply	other threads:[~2008-08-13 17:59 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-11 14:09 [PATCH 0/2] fix nfsd stateid encoding Benny Halevy
2008-08-11 14:34 ` [PATCH 1/2] nfsd: properly xdr-encode stateid4.seqid as uint32_t for cb_recall Benny Halevy
2008-08-11 14:35 ` [PATCH 2/2] nfsd: properly xdr-encode deleg stateid returned from open Benny Halevy
2008-08-11 15:58 ` [PATCH 0/2] fix nfsd stateid encoding J. Bruce Fields
2008-08-11 16:11   ` [pnfs] " Benny Halevy
2008-08-11 16:17     ` Chuck Lever
     [not found]       ` <76bd70e30808110917y5a9a1950l1d905f081bd7a819-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-08-11 16:27         ` Benny Halevy
2008-08-11 16:28         ` J. Bruce Fields
2008-08-11 17:39           ` Benny Halevy
2008-08-11 17:50             ` J. Bruce Fields
2008-08-12 17:40               ` Benny Halevy
2008-08-12 17:42                 ` [PATCH 1/7] nfsd: properly xdr-encode stateid4.seqid as uint32_t for cb_recall Benny Halevy
2008-08-12 17:43                 ` [PATCH 2/7] nfsd: properly xdr-encode deleg stateid returned from open Benny Halevy
2008-08-12 17:44                 ` [PATCH 3/7] nfsd: fix nfsd4_encode_open buffer space reservation Benny Halevy
2008-08-12 18:31                   ` J. Bruce Fields
2008-08-12 17:45                 ` [PATCH 4/7] nfsd: nfs4xdr encode_stateid helper function Benny Halevy
2008-08-12 18:39                   ` J. Bruce Fields
2008-08-13  7:27                     ` Benny Halevy
2008-08-13 15:01                       ` J. Bruce Fields
2008-08-12 17:45                 ` [PATCH 5/7] nfsd: don't declare p in ENCODE_SEQID_OP_HEAD Benny Halevy
2008-08-12 17:45                 ` [PATCH 6/7] nfsd: properly xdr-decode NFS4_OPEN_CLAIM_DELEGATE_CUR stateid Benny Halevy
2008-08-12 17:46                 ` [PATCH 7/7] nfsd: nfs4xdr decode_stateid helper function Benny Halevy
2008-08-12 19:04                   ` J. Bruce Fields
2008-08-13  7:31                     ` Benny Halevy
2008-08-13 15:03                       ` J. Bruce Fields
2008-08-13 17:59                         ` Trond Myklebust [this message]
2008-08-13 18:30                           ` J. Bruce Fields
2008-08-13 18:59                             ` Trond Myklebust
2008-08-13 19:11                               ` J. Bruce Fields
2008-08-13 19:35                                 ` Trond Myklebust
2008-08-13 20:17                                   ` J. Bruce Fields
2008-08-13 20:57                                     ` Chuck Lever
2008-08-14 10:49                                     ` Benny Halevy
2008-08-17 12:02                           ` [pnfs] " Boaz Harrosh
2008-08-19 22:44                             ` J. Bruce Fields
2008-08-12 19:14                 ` [pnfs] [PATCH 0/2] fix nfsd stateid encoding J. Bruce Fields
2008-08-11 16:27     ` J. Bruce Fields
2008-08-11 17:34       ` Benny Halevy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1218650349.9042.20.camel@localhost \
    --to=trond.myklebust@fys.uio.no \
    --cc=bfields@fieldses.org \
    --cc=bhalevy@panasas.com \
    --cc=chucklever@gmail.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=pnfs@linux-nfs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.