linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Jeff Layton <jlayton@primarydata.com>,
	linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	xfs@oss.sgi.com
Subject: Re: [PATCH 10/20] nfsd: implement pNFS operations
Date: Mon, 2 Feb 2015 09:28:32 -0500	[thread overview]
Message-ID: <20150202142832.GC22301@fieldses.org> (raw)
In-Reply-To: <20150202124349.GA15598@lst.de>

On Mon, Feb 02, 2015 at 01:43:49PM +0100, Christoph Hellwig wrote:
> On Thu, Jan 29, 2015 at 03:33:46PM -0500, J. Bruce Fields wrote:
> > Is there no old_stateid case for layout stateids?  And is there any
> > chance of wraparound?  (I was comparing to check_stateid_generation and
> > expecting the only difference to be the handling of the generation-zero
> > case.)
> 
> 12.5.3. explicitly mentions that LAYOUTGET and LAYOUTRETURN might be
> outstading and processed in parallel, and sais that pNFS operations
> use special stateid rules.  It does not explicitly say that old stateids
> are ok, but the model described in there very much requires the server
> to not reject them.
> 
> > > +static inline u64
> > > +layout_end(struct nfsd4_layout_seg *seg)
> > > +{
> > > +	u64 end = seg->offset + seg->length;
> > > +	return end >= seg->offset ? seg->length : NFS4_MAX_UINT64;
> > 
> > Shouldn't that be
> > 
> > 	return end >= seg->offset ? end : NFS_MAX_UINT64;
> > 
> > ?
> 
> Yes.  This is an interesting one that sneaked in, and it turns out
> besides dislabling layout merging it didn't have adverse effects.
> 
> > > +}
> > > +
> > > +static void
> > > +layout_update_len(struct nfsd4_layout_seg *lo, u64 end)
> > > +{
> > > +	if (end == NFS4_MAX_UINT64)
> > > +		lo->length = NFS4_MAX_UINT64;
> > 
> > Is this case necessary?
> > 
> > > +	else
> > > +		lo->length = end - lo->offset;
> 
> 
> We use NFS4_MAX_UINT64 as a magic value for layouts until the
> field end, as specified in the standard.  But because we do all
> kinds of calculations using the end value we need to propagate
> that magic from and to it.
> 
> > Should any of these have OP_MODIFIES_SOMETHING set?  (Basically: would
> > we be in trouble if we succesfully completed one of these operations and
> > then weren't able to encode the result?)
> 
> All but GETDEVICEINFO should get it.
> 
> I've implemented all your suggested changes and will send out and update
> after doing a little more testing.

Thanks!

I didn't notice anything that looked like a big problem to me, so absent
any objections I'll commit the revised versions for 3.20 once we figure
out how to handle the xfs stuff.

--b.

  reply	other threads:[~2015-02-02 14:28 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-22 11:09 a simple and scalable pNFS block layout server V2 Christoph Hellwig
2015-01-22 11:09 ` [PATCH 01/20] nfs: add LAYOUT_TYPE_MAX enum value Christoph Hellwig
2015-01-22 11:09 ` [PATCH 02/20] fs: track fl_owner for leases Christoph Hellwig
2015-01-22 11:09 ` [PATCH 03/20] fs: add FL_LAYOUT lease type Christoph Hellwig
2015-01-22 15:45   ` Jeff Layton
2015-01-22 20:14   ` J. Bruce Fields
2015-01-22 20:18     ` Christoph Hellwig
2015-01-22 11:09 ` [PATCH 04/20] nfsd: factor out a helper to decode nfstime4 values Christoph Hellwig
2015-01-22 20:15   ` J. Bruce Fields
2015-01-22 11:09 ` [PATCH 05/20] nfsd: move nfsd_fh_match to nfsfh.h Christoph Hellwig
2015-01-22 11:09 ` [PATCH 06/20] nfsd: add fh_fsid_match helper Christoph Hellwig
2015-01-22 11:09 ` [PATCH 07/20] nfsd: make lookup/alloc/unhash_stid available outside nfs4state.c Christoph Hellwig
2015-01-22 11:09 ` [PATCH 08/20] nfsd: make find/get/put file " Christoph Hellwig
2015-01-22 11:09 ` [PATCH 09/20] nfsd: make find_any_file " Christoph Hellwig
2015-01-22 11:09 ` [PATCH 10/20] nfsd: implement pNFS operations Christoph Hellwig
2015-01-29 20:33   ` J. Bruce Fields
2015-02-02 12:43     ` Christoph Hellwig
2015-02-02 14:28       ` J. Bruce Fields [this message]
2015-02-02 14:56         ` Christoph Hellwig
2015-02-02 15:00           ` J. Bruce Fields
2015-02-02 18:56             ` Christoph Hellwig
2015-02-03 16:08               ` J. Bruce Fields
2015-01-22 11:09 ` [PATCH 11/20] nfsd: implement pNFS layout recalls Christoph Hellwig
2015-01-22 11:09 ` [PATCH 12/20] nfsd: update documentation for pNFS support Christoph Hellwig
2015-01-22 11:09 ` [PATCH 13/20] nfsd: add trace events Christoph Hellwig
2015-01-22 11:10 ` [PATCH 14/20] exportfs: add methods for block layout exports Christoph Hellwig
2015-01-22 11:10 ` [PATCH 15/20] nfsd: pNFS block layout driver Christoph Hellwig
2015-01-22 11:10 ` [PATCH 16/20] xfs: pass a 64-bit count argument to xfs_iomap_write_unwritten Christoph Hellwig
2015-01-29 20:52   ` J. Bruce Fields
2015-02-02  7:30     ` Christoph Hellwig
2015-02-02 19:24       ` Dave Chinner
2015-02-02 19:43         ` Dave Chinner
2015-02-02 19:48           ` J. Bruce Fields
2015-02-03 18:35             ` Christoph Hellwig
2015-02-11 22:35               ` J. Bruce Fields
2015-02-11 22:54                 ` J. Bruce Fields
2015-02-04  7:57           ` Christoph Hellwig
2015-02-04 20:02             ` Dave Chinner
2015-01-22 11:10 ` [PATCH 17/20] xfs: update the superblock using a synchronous transaction in growfs Christoph Hellwig
2015-01-22 11:10 ` [PATCH 18/20] xfs: factor out a xfs_update_prealloc_flags() helper Christoph Hellwig
2015-02-01 23:06   ` Dave Chinner
2015-01-22 11:10 ` [PATCH 19/20] xfs: implement pNFS export operations Christoph Hellwig
2015-02-05  0:47   ` Dave Chinner
2015-02-05  7:08     ` Christoph Hellwig
2015-02-05 13:57       ` Christoph Hellwig
2015-02-06 22:20         ` Dave Chinner
2015-02-06 22:42           ` J. Bruce Fields
2015-02-08 13:34             ` Christoph Hellwig
2015-02-08 14:09               ` Jeff Layton
2015-02-09 20:11                 ` J. Bruce Fields
2015-02-10  0:04                   ` Dave Chinner
2015-02-13  1:11                     ` J. Bruce Fields
2015-02-13  1:54                       ` Dave Chinner
2015-02-13  2:38                         ` Stephen Rothwell
2015-02-15 23:25                           ` Dave Chinner
2015-01-22 11:10 ` [PATCH 20/20] xfs: recall pNFS layouts on conflicting access Christoph Hellwig
2015-02-05  0:51   ` Dave Chinner
2015-01-22 16:04 ` a simple and scalable pNFS block layout server V2 Chuck Lever
2015-01-22 16:21   ` Christoph Hellwig
2015-01-22 20:01 ` J. Bruce Fields
2015-01-22 20:06 ` J. Bruce Fields
2015-01-22 20:20   ` Christoph Hellwig
2015-01-22 20:20   ` Jeff Layton

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=20150202142832.GC22301@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=hch@lst.de \
    --cc=jlayton@primarydata.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=xfs@oss.sgi.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).