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.
next prev parent 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).