linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: "Haynes, Tom" <Tom.Haynes@netapp.com>
Cc: Christoph Hellwig <hch@infradead.org>,
	"J. Bruce Fields" <bfields@fieldses.org>,
	"Schumaker, Bryan" <Bryan.Schumaker@netapp.com>,
	Mailing List Linux NFS <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 4/4] NFSD: Implement SEEK
Date: Tue, 5 Nov 2013 00:23:04 -0800	[thread overview]
Message-ID: <20131105082304.GA17793@infradead.org> (raw)
In-Reply-To: <12D9C342-D7DC-41B1-B2D5-C13A89E5BDE1@netapp.com>

On Tue, Nov 05, 2013 at 02:07:15AM +0000, Haynes, Tom wrote:
> We did not want many new operators and also wanted the operators to
> be extensible. With this approach, you can define a new arm of the
> discriminated union, not have to implement it, and not burn an
> operator.

That seems very much like a non-argument.  If saving operators was a
good argument the NFS operations should be

MULTIPLEX1 with many sub opcodes, followed by MULTIPLEX2 once it fills
up.

> Some of the history is captured here:
> 
> http://www.ietf.org/mail-archive/web/nfsv4/current/msg11235.html

That mail seems to draw the wrong conclusion that a hole punching
or a preallocation are equivalent to a server side copy from /dev/zero.

Treating a pattern write as a server side copy is fine and I'd fully
support that.  Hole punching and preallocation on the other hand are
primarily metadata operations that reserve or free space.  They only
happen to zero out the range as zero is the most convenient well known
pattern to avoid stale data exposure.

> http://www.ietf.org/mail-archive/web/nfsv4/current/msg11470.html

I think Chuck's reply summarizes very well why a pattern initialization
should not be mixed with an actual data write.  

> http://www.ietf.org/proceedings/84/slides/slides-84-nfsv4-1.pdf (slide 6)

That side seems to inadvertently sum up a lot of what's wrong with merging
hole punching and preallocations into some form of super write:

 - COMMIT doesn't really apply to pure metadata operations like a hole
   punch and preallocation, so fitting it into a WRITE that expects
   COMMIT causes all kinds of problems (as we saw in the thread about
   Annas implementation).
 - requiring the server to be able to handle offloads for these
   operations does not make any sense, because they are again very
   quick metadata operation, and not long running operation like
   a pattern initialization on the server.

Note that the arbitrary pattern initialization over multiple blocks is
a very different operation from a space allocation even if the latter
happens to also zero the range as a side effect.


> 
> It doesn't capture the intent of NFS4ERR_UNION_NOTSUPP in
> this decision.
> 
> 11.1.1.1.  NFS4ERR_UNION_NOTSUPP (Error Code 10090)
> 
>    One of the arguments to the operation is a discriminated union and
>    while the server supports the given operation, it does not support
>    the selected arm of the discriminated union.  For an example, see
>    READ_PLUS (Section 14.10).

Btw, there is an odd use of this error in 14.7.3.:

 "WRITE_PLUS has to support all of the errors which are returned by
  WRITE plus NFS4ERR_UNION_NOTSUPP.  If the client asks for a hole and
  the server does not support that arm of the discriminated union, but
  does support one or more additional arms, it can signal to the
  client that it supports the operation, but not the arm with
  NFS4ERR_UNION_NOTSUPP."

This does not specicly writes but appears to assume hole punching
is the only optional arm.  On the other hand to me it appears the only
interesting arm, with the data arm buying nothing over WRITE in 4.2 and
thus being entirely superflous, and ADHs being a complicated map to Unix
filesystems on the backend.

  reply	other threads:[~2013-11-05  8:23 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-28 14:57 [PATCH 0/4] NFSD: Add support for WRITE_PLUS and SEEK Anna Schumaker
2013-10-28 14:57 ` [PATCH 1/4] NFSD: Update error codes Anna Schumaker
2013-10-28 14:57 ` [PATCH 2/4] NFSD: Create nfs v4.2 decode ops Anna Schumaker
2013-10-28 20:54   ` J. Bruce Fields
2013-10-28 20:59     ` Myklebust, Trond
2013-10-28 21:11       ` J. Bruce Fields
2013-10-29 12:43         ` Anna Schumaker
2013-10-29 13:33           ` J. Bruce Fields
2013-10-28 14:57 ` [PATCH 3/4] NFSD: Add WRITE_PLUS support for hole punches Anna Schumaker
2013-10-28 21:40   ` J. Bruce Fields
2013-10-29 12:49     ` Anna Schumaker
2013-10-29 13:34       ` J. Bruce Fields
2013-10-29 12:50     ` Anna Schumaker
2013-10-29 13:06       ` J. Bruce Fields
2013-10-29 13:11         ` Anna Schumaker
2013-10-29 13:23         ` Myklebust, Trond
2013-10-29 13:28           ` Anna Schumaker
2013-10-29 13:32           ` Dr Fields James Bruce
2013-11-02 13:54         ` Christoph Hellwig
2013-11-02 14:44           ` J. Bruce Fields
2013-11-02 14:51             ` Christoph Hellwig
2013-11-02 15:02               ` Myklebust, Trond
2013-11-02 15:07                 ` Christoph Hellwig
2013-11-02 15:20     ` Christoph Hellwig
2013-11-02 13:52   ` Christoph Hellwig
2013-11-04 16:41     ` Anna Schumaker
2013-11-04 17:03       ` Christoph Hellwig
2013-11-04 17:23         ` Anna Schumaker
2013-11-04 18:53           ` Christoph Hellwig
2013-11-04 18:57             ` Anna Schumaker
2013-11-04 19:16             ` Chuck Lever
2013-11-04 19:19               ` Christoph Hellwig
2013-11-04 19:50                 ` Chuck Lever
2013-11-04 19:54                   ` Christoph Hellwig
2013-11-04 19:55                   ` J. Bruce Fields
2013-11-04 20:03                   ` Haynes, Tom
2013-11-04 20:13                     ` Christoph Hellwig
2013-11-05  9:40   ` Christoph Hellwig
2013-11-05 14:23     ` Anna Schumaker
2013-11-05 15:11       ` Christoph Hellwig
2013-10-28 14:57 ` [PATCH 4/4] NFSD: Implement SEEK Anna Schumaker
2013-10-28 21:51   ` J. Bruce Fields
2013-10-29 12:53     ` Anna Schumaker
2013-10-29  7:35   ` Christoph Hellwig
2013-10-29 13:00     ` Anna Schumaker
2013-10-29 13:07       ` Christoph Hellwig
2013-10-29 13:30         ` J. Bruce Fields
2013-11-02 13:48           ` Christoph Hellwig
2013-11-02 14:37             ` J. Bruce Fields
2013-11-02 14:41               ` Christoph Hellwig
2013-11-04 16:46                 ` J. Bruce Fields
2013-11-04 17:05                   ` Christoph Hellwig
2013-11-04 17:22                     ` Chuck Lever
2013-11-05 12:33                       ` Christoph Hellwig
2013-11-04 21:56                   ` Thomas Haynes
2013-11-05  1:03                     ` Christoph Hellwig
2013-11-05  2:07                       ` Haynes, Tom
2013-11-05  8:23                         ` Christoph Hellwig [this message]
2013-10-31 16:04   ` Christoph Hellwig
2013-10-31 16:07     ` Anna Schumaker
2013-10-31 16:17     ` Anna Schumaker
2013-10-31 17:13       ` Christoph Hellwig
2013-10-28 14:57 ` [RFC 5/4] NFSD: Add basic CB_OFFLOAD support Anna Schumaker
2013-10-28 21:52   ` J. Bruce Fields
2013-10-29  7:37     ` Christoph Hellwig
2013-10-29 13:36       ` J. Bruce Fields
2013-10-29 13:38         ` Christoph Hellwig
2013-10-29 13:53           ` J. Bruce Fields
2013-10-29 15:11             ` Christoph Hellwig
2013-10-28 20:00 ` [PATCH 0/4] NFSD: Add support for WRITE_PLUS and SEEK Christoph Hellwig

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=20131105082304.GA17793@infradead.org \
    --to=hch@infradead.org \
    --cc=Bryan.Schumaker@netapp.com \
    --cc=Tom.Haynes@netapp.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.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 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).