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

Chuck Lever <chuck.lever@oracle.com> Sat, 25 February 2017 17:48 UTC

Return-Path: <chuck.lever@oracle.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 33FCE12940A for <nfsv4@ietfa.amsl.com>; Sat, 25 Feb 2017 09:48:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.089
X-Spam-Level:
X-Spam-Status: No, score=-6.089 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-1.887, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 710wYd__Rkor for <nfsv4@ietfa.amsl.com>; Sat, 25 Feb 2017 09:48:38 -0800 (PST)
Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AF35612940E for <nfsv4@ietf.org>; Sat, 25 Feb 2017 09:48:38 -0800 (PST)
Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v1PHma5k002308 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 25 Feb 2017 17:48:37 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v1PHmaS6015364 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 25 Feb 2017 17:48:36 GMT
Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v1PHmZBA006773; Sat, 25 Feb 2017 17:48:35 GMT
Received: from [172.20.6.26] (/64.21.211.131) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 25 Feb 2017 09:48:35 -0800
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <CADaq8je8zfRN5R11LxJw=0st-u-XOoKosGbZDBajOTiChzpS5Q@mail.gmail.com>
Date: Sat, 25 Feb 2017 09:48:30 -0800
Content-Transfer-Encoding: quoted-printable
Message-Id: <93F476D6-57F8-44AB-94C9-545608396F51@oracle.com>
References: <CADaq8je8zfRN5R11LxJw=0st-u-XOoKosGbZDBajOTiChzpS5Q@mail.gmail.com>
To: David Noveck <davenoveck@gmail.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: userv0022.oracle.com [156.151.31.74]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/UKYbxwyODDG1xWSqknBIcpkGXmA>
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 17:48:41 -0000

> 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