Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-06

David Noveck <davenoveck@gmail.com> Sat, 25 February 2017 23:54 UTC

Return-Path: <davenoveck@gmail.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AFCD3129546 for <nfsv4@ietfa.amsl.com>; Sat, 25 Feb 2017 15:54:26 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.698
X-Spam-Level:
X-Spam-Status: No, score=-2.698 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qEZBRLl6oUqJ for <nfsv4@ietfa.amsl.com>; Sat, 25 Feb 2017 15:54:24 -0800 (PST)
Received: from mail-oi0-x230.google.com (mail-oi0-x230.google.com [IPv6:2607:f8b0:4003:c06::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 72B10129526 for <nfsv4@ietf.org>; Sat, 25 Feb 2017 15:54:24 -0800 (PST)
Received: by mail-oi0-x230.google.com with SMTP id f192so6003079oic.3 for <nfsv4@ietf.org>; Sat, 25 Feb 2017 15:54:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=I3mfkszDGnhXqEXVLIZ+jMXqlMWExFSDAmajcO4jj0Q=; b=ujTyI4XfqbylKI03VjcYcRjWIRxhyRQWvQePfQnaMgE1qESWN+or7CeeQyV6VuAPOl bT8RQpcctSciSuy3SDyLmo6lhheBHxWhzN7G1iFH8xOYo7dSIpNtiBO7dDat0Wa87e7D uF3Z7GLDy+U/K5zuJNNWgdeBGd5PC3kpJENN5iQ5swg5I6hVs8HSNx0MWcYPmXKqEHqz W6JwgwkNyBgjHsQJICVsbf5fNM5mzjal0kCy5w9dKKqJ/27yggCkykWsXhpkzq1EChBx CpDn8PMUb4ORLWDdcx+/JDYsx/kQiBzk69ssqGSblRlmaM5ZRC8nLyhlcfvjeib2ZRrj oVvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=I3mfkszDGnhXqEXVLIZ+jMXqlMWExFSDAmajcO4jj0Q=; b=i1z9eeXe55kdyVZti183UpuM2LTMJLRjtiAvlBq+H5lxstWUZPMeZ6GYgE1itXs2tc xy9CL5iHNiB9y1PTGtzbaW/XLD71GsSzF+4cn1TVLO/L1Ju47mmaFVwrMJhVXyYVncpT BGN+JVcHdl8uxo6LSeXgtwfH+mFgo1Wap12dTJou2TMMMuoQmB4vbv6LACSELxnvZA9v 0C4HI5fZVgvaees2WphgSg2+ByXpa0WlGcJHqUPPwNDjeg8Gv17CEVFoTGiSPZZm0Ppv XrzQK3LlyaBYk/+ORYOPJD07HiZg1A+4golMSSUzd7ozLbGsEMoAQIkrDcejTRP4J5FH MfFQ==
X-Gm-Message-State: AMke39lU118D6Px79mXOEpQ76S6TQEktv2w7lTlAFhUwTDVfn3mDunnwnD0Zs0tvjmscV5ui3c/musPpmdyqrA==
X-Received: by 10.202.252.136 with SMTP id a130mr5077292oii.153.1488066863616; Sat, 25 Feb 2017 15:54:23 -0800 (PST)
MIME-Version: 1.0
Received: by 10.182.137.200 with HTTP; Sat, 25 Feb 2017 15:54:22 -0800 (PST)
In-Reply-To: <93F476D6-57F8-44AB-94C9-545608396F51@oracle.com>
References: <CADaq8je8zfRN5R11LxJw=0st-u-XOoKosGbZDBajOTiChzpS5Q@mail.gmail.com> <93F476D6-57F8-44AB-94C9-545608396F51@oracle.com>
From: David Noveck <davenoveck@gmail.com>
Date: Sat, 25 Feb 2017 18:54:22 -0500
Message-ID: <CADaq8jcJ3WkpmPJVVec5aJc0ekKgdHPUok=S5_ofGVJnbqrrjA@mail.gmail.com>
To: Chuck Lever <chuck.lever@oracle.com>
Content-Type: multipart/alternative; boundary="001a113df2ceced7d90549639058"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/XHtUJaZXd_NNbu0iqZF3tvyINvQ>
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>
Subject: Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-06
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 25 Feb 2017 23:54:26 -0000

> RFC 5667 Section 4 says:

> > Similarly, a single RDMA Read list entry MAY be posted by the client
> > to supply the opaque file data for a WRITE request or the pathname
> > for a SYMLINK request.

Part of the problem here is that, as you discuss later, this statement is
ambiguous, as the meaning of "read list entry" is not clear.

> > The server MUST ignore any Read list for
> > other NFS procedures,

As I understand it, this statement cannot apply to PZRCs, and rfc5666bis
has already dealt with that issue.  So, if one tried to maintain this
paragraph,
in something like the RFC5667-form, some modification would have been
necessary to avoid essentially preventing any use of PZRCs

> > as well as additional Read list entries beyond
> > the first in the list.

> I take "Read list entry" to mean Read chunk, composed of
> multiple list entries that share the same XDR position.
> This comports with similar language describing Write
> chunks where a single list entry is indeed allowed to
> have multiple segments.

Makes sense to me.

> However, the original intent might have been "single
> Read segment".

It might have been but there is no way to be sure.  In some
cases, one might look to how existing implementations behave,
to come up with an interpretation even though it might not
have been what the author intended.

> In that case, this language clearly states
> that Legacy clients can send only one contiguous memory
> region

I think you mean that,  if that were the case, this language would
mean that.

> in Legacy NFS READ and SYMLINK requests.

I think we are talking about WRITE and SYMLINK, given
that read chunks are mentioned.

While I can easily believe that existing implementations
limit SYMLINKs to a single contiguous buffer, I have trouble
believing the same about WRITEs.

> At your behest I replaced the RFC 5667 language with
> just the definitions of which XDR data items are DDP
> eligible, and removed the discussion about Read list
> entries.

One benefit of that is that we now know what the spec says, while,
as with the section 4 text you quoted, we weren't.

> This new language permits a Legacy client to reduce the
> Payload stream of an NFS READ or SYMLINK request and put
> that stream into a Position-Zero Read chunk. The client
> would then send the PZRC and the non-zero position chunk:
> two distinct Read chunks, which is not allowed by the
> RFC 5667 language discussing NFS READ or SYMLINK.

It is not clear that section 4 would disallow that.  Beyond the
uncertainty about what "read list entry" means and a possible need
to treat PZRCs separately as done in rfc5666bis, the issue is that
you are only supposed to ignore "additional Read list entries beyond
the first in the list."  To me, this would allow a PZRC, if it is the first
in the
list, which it might well be.

Anyway, your view and my view of this obscure text doesn't really
count.  We have to work off the behavior of implementations.  If existing
implementations did or didn't do something because of this presumed
restriction, that would provide an answer.  Unfortunately, I don't think
this
provides an answer either,

> To remain interoperable with RFC 5667-compliant
> implementations, only one Read chunk is allowed, which
> excludes the use of reduced Payload streams in a PZRC,
> even though RPC-over-RDMA Version One allows this
> construction.

True but it is not clear to me me how this situation could ever
arise given:

   - The XDR of legacy NFS protocols
   - The definition of what is DDP-eligible in the ULB


> There isn't a need to support sending a reduced Payload
> stream this way in these NFS versions, so I added the new
> paragraph to forbid it explicitly.

If there is no way for this situation to arise, there is no need to
forbid it explicitly.

> This should now have
> the same basic meaning as Section 4 of RFC 5667.

As the meaning of that section is so unclear, I can't
be sure.

On Sat, Feb 25, 2017 at 12:48 PM, Chuck Lever <chuck.lever@oracle.com>
wrote:

>
> > On Feb 25, 2017, at 4:57 AM, David Noveck <davenoveck@gmail.com> wrote:
> >
> > 3.  Upper Layer Binding for NFS Versions 2 and 3
> > The penultimate paragraph in this section is new in this version and I
> don't understand the need for a new version 2/3 restriction so late in the
> game.
>
> RFC 5667 Section 4 says:
>
> > Similarly, a single RDMA Read list entry MAY be posted by the client
> > to supply the opaque file data for a WRITE request or the pathname
> > for a SYMLINK request.  The server MUST ignore any Read list for
> > other NFS procedures, as well as additional Read list entries beyond
> > the first in the list.
>
> I take "Read list entry" to mean Read chunk, composed of
> multiple list entries that share the same XDR position.
> This comports with similar language describing Write
> chunks where a single list entry is indeed allowed to
> have multiple segments.
>
> However, the original intent might have been "single
> Read segment". In that case, this language clearly states
> that Legacy clients can send only one contiguous memory
> region in Legacy NFS READ and SYMLINK requests.
>
> At your behest I replaced the RFC 5667 language with
> just the definitions of which XDR data items are DDP
> eligible, and removed the discussion about Read list
> entries.
>
> This new language permits a Legacy client to reduce the
> Payload stream of an NFS READ or SYMLINK request and put
> that stream into a Position-Zero Read chunk. The client
> would then send the PZRC and the non-zero position chunk:
> two distinct Read chunks, which is not allowed by the
> RFC 5667 language discussing NFS READ or SYMLINK.
>
> To remain interoperable with RFC 5667-compliant
> implementations, only one Read chunk is allowed, which
> excludes the use of reduced Payload streams in a PZRC,
> even though RPC-over-RDMA Version One allows this
> construction.
>
> There isn't a need to support sending a reduced Payload
> stream this way in these NFS versions, so I added the new
> paragraph to forbid it explicitly. This should now have
> the same basic meaning as Section 4 of RFC 5667.
>
> RFC 5667 does not restrict sending a Write chunk and a
> Reply chunk together. However IIRC current implementations
> do not support this (at least with NFSv2 and NFSv3) and
> there shouldn't ever be a need to for these NFS versions.
>
>
> > If this is not a new restriction, the intent would be clearer if it was
> rewritten as follows:
> > The structure of the NFS version 2 and  3 protocols and limitations on
> DDP-eligible data items given above are such that:
> >       • It is impossible for a Legacy  NFS client to validly send a
> reduced Payload stream in a Long Call.
> >       • It is impossible for a Legacy  NFS client to validly enable a
> Legacy NFS server to send a reduced Payload stream in a Long Reply.
>
>
> --
> Chuck Lever
>
>
>
>