Re: [nfsv4] Review comments for WGLC of draft-ietf-nfsv4-layout-types
Chuck Lever <chuck.lever@oracle.com> Wed, 30 August 2017 17:53 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 C8D02132716 for <nfsv4@ietfa.amsl.com>; Wed, 30 Aug 2017 10:53:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.22
X-Spam-Level:
X-Spam-Status: No, score=-4.22 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 55gFy7ZkGJIy for <nfsv4@ietfa.amsl.com>; Wed, 30 Aug 2017 10:53:49 -0700 (PDT)
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 187891328DB for <nfsv4@ietf.org>; Wed, 30 Aug 2017 10:53:49 -0700 (PDT)
Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v7UHrk62014309 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Aug 2017 17:53:46 GMT
Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v7UHrjlx017644 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Aug 2017 17:53:45 GMT
Received: from abhmp0014.oracle.com (abhmp0014.oracle.com [141.146.116.20]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id v7UHrjhD004264; Wed, 30 Aug 2017 17:53:45 GMT
Received: from anon-dhcp-171.1015granger.net (/68.46.169.226) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 30 Aug 2017 10:53:45 -0700
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: <EF669094-DF5B-45F7-9A19-0760A13541C1@primarydata.com>
Date: Wed, 30 Aug 2017 13:53:44 -0400
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>, hch <hch@lst.de>
Content-Transfer-Encoding: quoted-printable
Message-Id: <7E94FEDD-F164-478E-ADED-9C217E9E8819@oracle.com>
References: <418E308E-5057-499A-B403-38486BDEF772@oracle.com> <7572D8F6-D1FF-4723-AF89-1AD2B8C0F4F8@primarydata.com> <2F4E7FEE-0F61-4E73-8077-3D3AE134A85F@oracle.com> <EF669094-DF5B-45F7-9A19-0760A13541C1@primarydata.com>
To: Thomas Haynes <loghyr@primarydata.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: aserv0022.oracle.com [141.146.126.234]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/urjSen_y4DjI-FUvbhqVFUc_6rc>
Subject: Re: [nfsv4] Review comments for WGLC of draft-ietf-nfsv4-layout-types
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.22
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: Wed, 30 Aug 2017 17:53:53 -0000
> On Aug 29, 2017, at 4:59 PM, Thomas Haynes <loghyr@primarydata.com> wrote: > >> >> On Aug 16, 2017, at 3:49 PM, Chuck Lever <chuck.lever@oracle.com> wrote: >> >>> >>> On Aug 15, 2017, at 2:51 PM, Thomas Haynes <loghyr@primarydata.com> wrote: >>> >>> >>>> On Aug 3, 2017, at 10:06 AM, Chuck Lever <chuck.lever@oracle.com> wrote: >>>> >>>> Thanks to Tom for writing this one. >>> >>> No, thank you for the review! >>> >>> >>>> >>>> I'm not qualified to address the technical issues covered by this >>>> document, thus my comments are limited to editorial and mechanical >>>> suggestions. >>>> >>>> It would be great if current authors of new layouts (other than >>>> the author of this document) could review this one. Christoph, >>>> can you take a look at this one? It's short. >>>> >>>> The document is a valuable addition to the canon of pNFS >>>> specifications, but is still rough around the edges IMO. Nothing >>>> that is impossible to fix, but seems like section 4 needs some >>>> face lifting. >>>> >>>> >>>> Document status: >>>> >>>> This is a "Standards Track" document. Section 4 appears to update >>>> three RFCs which are Standards Track. Only one of these is mentioned >>>> in the document header and Abstract. >>>> >>>> Section 3 appears to be advice to authors of layout specifications, >>>> and advice to the WG on how to evaluate new layouts. Is the use of >>>> RFC 2119 terms appropriate for this section of this document? >>>> >>> >>> I think it is clear I am not a paragon of virtue when it comes to >>> the correct use of RFC 2119 terms. >>> >>> >>>> >>>> == Abstract == >>>> >>>> "as a whole and those those specifically directed" >>>> >>>> Consider: >>>> >>>> "as a whole and those specifically directed” >>> >>> Ugh, thanks >>> >>>> >>>> >>>> == 1. Introduction == >>>> >>>> "As a consequence, new internet drafts (see [FlexFiles] and [Lustre]) >>>> may struggle to meet the requirements to be a pNFS layout type." >>>> >>>> The Lustre document referenced here does not appear to be an RFC or an >>>> active I-D: >>>> >>>> https://datatracker.ietf.org/doc/draft-faibish-nfsv4-pnfs-lustre-layout/ >>>> >>>> Perhaps the reference should be removed or replaced. >>> >>> >>> Which is why it is not normative. Note that the URL is stable. >>> >>> This may come out during the last editorial phase. It lays the groundwork >>> for why we want the document. >>> >>> >>>> >>>> "This document specifies the layout type independent requirements placed >>>> on all layout types, whether one of the original three or any new variant." >>>> >>>> Consider this simplification: >>>> >>>> "This document specifies layout type-independent requirements placed on >>>> all layout types.” >>> >>> We have after Dave’s review: >>> >>> This document specifies the requirements placed on all layout types >>> independent of the particular type chosen, whether one of the >>> original three or any new additional one. >>> >>> and I think you would argue for: >>> >>> This document specifies the requirements placed on all layout types >>> independent of the particular type chosen. >>> >>> And taking in mind your last point about the Intro, how about this as a >>> last paragraph: >>> >>> As a consequence, new internet drafts (see [FlexFiles] and [Lustre]) >>> may struggle to meet the requirements to be a pNFS layout type. This >>> document gathers the requirements from all of the original layout >>> type standard documents and then specifies the requirements placed on >>> all layout types independent of the particular type chosen. >>> >>> >>> >>>> >>>> The introduction should also announce what is happening in section 4, >>>> which provides updates to existing layout types. >>>> >>>> >>>> == 2. Definitions == >>>> >>>> In general the syntax of each definition should be consistent. You >>>> have "defines yada", "is yada", and sometimes complete sentences. >>>> Some examples follow: >>>> >>>> "control communication requirements: define for a layout type the >>>> details regarding information on layouts, stateids, file metadata, >>>> and file data which must be communicated between the metadata >>>> server and the storage devices." >>>> >>>> Consider: >>>> >>>> "control communication requirements: layout type requirements >>>> regarding information on layouts, stateids, file metadata, >>>> and file data which must be communicated between the metadata >>>> server and storage devices." >>>> >>>> >>>> "(file) data: is that part of the file system object which contains >>>> the data to read or writen. It is the contents of the object and >>>> not the attributes of the object." >>>> >>>> Consider: >>>> >>>> "(file) data: data content that is opaque to storage services. >>>> File data that is written is expected to be unaltered when it is >>>> subsequently read back. In particular, data content is not the >>>> file's attributes." >>>> >>>> "fencing: is the process by which the metadata server prevents the >>>> storage devices from processing I/O from a specific client to a >>>> specific file. >>>> >>>> Consider: >>>> >>>> "fencing: the mechanism by which a metadata server prevents >>>> storage devices from processing I/O from a specific client to a >>>> specific file." >>>> >>>> And so on. >>> >>> Went with <def>: [is | are] and complete sentences. >>> >>> >>>> >>>> "layout iomode: see Section 1." >>>> >>>> Strikes me as needing expansion. If a single paragraph is not >>>> adequate, perhaps another subsection of 2 can be added. >>> >>> This had already been fixed. >>> >>> >>>> >>>> "loose coupling: describes when the control protocol, between a >>>> metadata server and storage device, is a storage protocol." >>>> >>>> Loose and tight coupling might be better served in a separate >>>> subsection. This definition strikes me as vague for a first time >>>> reader. At least refer to section 3 here. >>>> >>>> The terms "layout" and "layout type" are key to the entire >>>> discussion. They might benefit greatly from an independent >>>> subsection in section 2, or even some discussion in section 1. >>>> >>> >>> >>> I think there is a difference of opinion on what the definitions >>> section means. To me, the section provides the smallest >>> possible definition that the reader can look at to >>> get the gist of the term. It is not a comprehensive >>> definition of the term. >>> >>> When the reader comes across “layout type” later in >>> the document, they can flip back to the definitions >>> section to see the broad intent of the term. >> >> I accept your definition of "definition". >> >> There are certain terms, however, that you've already >> chosen to elaborate on. Elaborating on one or two >> other terms could be helpful, but I'm not going to >> be insistent. >> >> >>>> You might find it handy to have distinct definitions of "file >>>> access protocols" and "block access protocols" as separate classes >>>> of storage protocols. >>>> >>>> Throughout the document, you might consider using a more abstract >>>> term than "I/O operation". "File data access" for example might >>>> be more independent of which storage protocol is in use, or >>>> whether the access is direct to a storage device or through the >>>> MDS. >>>> >>> >>> I’m fine with I/O. >>> >>> >>>> >>>> == 2.1. Use of the terms ... == >>>> >>>> "Note that every data server is a storage device but >>>> that storage devices which use protocols which are not file access >>>> protocol are not data servers.” >>>> >>> >>> Ouch, in isolation this reads very badly. >>> >>> >>>> Consider: >>>> >>>> ... "is a storage device, but storage devices which use protocols >>>> which are not file access protocols (such as NFS) are not data >>>> servers.” >>>> >>> >>> >>> Taken. >>> >>> >>>> "while simultaneously acting as a non-data-server storage device for >>>> others." >>>> >>>> I'm not quite sure what you are saying here. I don't see a definition >>>> for "non-data-server storage device". In context, perhaps you are >>>> referring to a storage device that does not simultaneously provide >>>> file access? >>> >>> >>> A storage device can be a data server for one storage protocol >>> and at the same time, not a data server for another storage >>> protocol. >>> >>> Changed it to: >>> >>> Since a given storage device may support multiple layout types, a >>> given device can potentially act as a data server for some set of >>> storage protocols while simultaneously acting as a storage device >>> for others. >>> >>> >>>> >>>> This discussion could benefit from adding definitions of "file >>>> data access" and "block data access", for instance. >>>> >>>> >>>> == 3. The Control Protocol == >>>> >>>> "In Section 12.2.6 of [RFC5661], the control protocol was introduced." >>>> >>>> Consider: >>>> >>>> "In Section 12.2.6 of [RFC5661], the concept of a layout type control >>>> protocol was introduced.” >>> >>> I’m struggling with adding this differentiation and I think I have a fix: >>> >>> One of the key requirements of a layout type is the need for a >>> mechanism to be used to meet the requirements that apply to the >>> interaction between the metadata server and the storage device such >>> that they present a consistent interface to the client >>> (Section 12.2.6 of [RFC5661]). >> >> I'm having some trouble with this. Mechanically, the word >> "requirements" is repeated. The last bit doesn't make sense >> to me: NFS and the storage protocols already make up a >> "consistent interface to clients," so I think you mean >> something else, like "a consistent view of stored data and >> lock state”. > > > I see why you are struggling with it, but replacing it is a struggle for me. > > What you have is that each of the: > > 1) NFS protocol between client and mds > 2) Storage protocol between client and storage device > > are already consistent interfaces. > > What I am saying is that the union of the two has to > be consistent. > > Argh, I can read mine in yours but not yours in mine: > > > A layout type has to meet the requirements that apply to the > interaction between the metadata server and the storage device such > that they present to the client a consistent view of stored data and > lock state (Section 12.2.6 of [RFC5661]). > > >> >> It might be easier to parse if you broke it into two or >> three sentences. > > > > > > >> >> >>> Particular implementations may >>> satisfy this requirement in any manner they choose and the mechanism >>> chosen may not be described as a protocol. >> >> In normal English, "may not be described as a protocol" can mean >> "please do not describe it as a protocol." A less ambiguous wording >> might be: >> >> "The chosen control mechanism is not required to be described as >> [or perhaps, specified as] a protocol.” >> > > > In fixing the above, I actually struggled over this before reading this, I had gone with: > > Particular implementations > may satisfy these requirements in any manner they choose and the > mechanism chosen need not be described as a protocol. > > But now I am thinking of > > Particular implementations > may satisfy these requirements in any manner they choose and the > mechanism chosen need not be specified as a protocol. > > > >> >>> Specifications defining >>> layout types need to clearly show how implementations can meet the >> >> Last nit picked, I promise: "to show clearly” >> > > Over the lifetime of this document or the author? > > :-) > > > >> >>> requirements discussed below, especially with respect to those that >>> have security implications. In addition, such specifications may >>> find it necessary to impose requirements on implementations of the >>> layout type to ensure appropriate interoperability. >>> >>> Notice I also deleted a some sentences. >>> >>> >>>> >>>> This text is repeated in front of the third and fourth paragraphs: >>>> >>>> "In some cases, there may be no control protocol other than the >>>> storage” >>> >>> Fixed elsewhere >>> >>> >>> >>>> >>>> "for metadata serverss and storage devices" >>>> >>>> Consider: >>>> >>>> "for metadata servers and storage devices” >>> >>> Fixed elsewhere >>> >>>> >>>> "(2) The metadata server MUST be able to restrict access to a file on >>>> the storage devices when it revokes a layout." >>>> >>>> This section should make clear that after layout revocation, a client >>>> is still allowed to access file data via the MDS. >>> >>> Stating that is redundant to point 1. >>> >>> >>>> >>>> "(4) Locking MUST be respected." >>>> >>>> This section feels like it needs expansion. Even "NFSv4.1 file locking >>>> semantics MUST be respected." Otherwise, this is not an enforceable >>>> MUST. >>> >>> >>> Already reworked. >>> >>>> >>>> "(5) The metadata server and the storage devices MUST agree on >>>> attributes like modify time, the change attribute, and the end- >>>> of-file (EOF) position." >>>> >>>> It would be better to attempt to provide a list of the attributes where >>>> this requirement is necessary instead of providing examples. >>>> >>>> I think this section would be more clear if the requirement is >>>> constructed from solely the client's view. >>> >>> I’m fine with the current POV. >>> >>>> >>>> This item and its discussion don't make sense for storage protocols that >>>> are not file access protocols. It needs to be rephrased to apply strictly >>>> to storage devices that are accessed via a file access protocol, which >>>> would expose file attribute information to clients. >>>> >>> >>> Oh, good catch! >>> >>> >>>> >>>> == 3.2. Undocumented ... == >>>> >>>> "(4) Clients MUST NOT perform I/O operations which would be >>>> inconsistent with the iomode specified in the layout segments it >>>> holds." >>>> >>>> It's not immediately obvious to me what you are getting at in this >>>> item. >>>> >>> >>> If a client has a READ iomode, then it cannot WRITE using it. >>> >>> >>>> "(5) The metadata server MUST be able to do allocation and >>>> deallocation of storage. I.e., creating and deleting files." >>>> >>>> Perhaps the language here could be refined. "storage" can mean anything >>>> and hasn't been previously defined. >>> >>> I think the rewording from Dave’s review satisfies this? >>> >>> (3) The metadata server MUST be able to do storage allocation, >>> whether that is to create, delete, extend, or truncate files. >>> >>> >>>> >>>> I think you are talking about managing layout extents on storage >>>> devices? >>>> >>>> >>>> == 4.1 File Layout Type == >>>> >>>> Throughout this section, the discussion is not clear when it switches >>>> between describing behavior specified by RFC 5661, current >>>> implementation behavior, and fresh advice to new implementers. >>> >>> >>> I’m torn here, despite this statement: >>> >>> This section is not normative with regards to each of the presented >>> types. This document does not update the specification of either the >>> block layout type (see [RFC5663]) or the object layout type (see >>> [RFC5664]). Nor does it update Section 13 of [RFC5661], but rather >>> Section 12 of that document. In other words, it is the pNFS >>> requirements being updated rather than the specification of the file >>> layout type. >> >> Now I understand what you're going for. I think it would be more >> clear if you start with what _is_ being updated. How about: >> >> "This section updates Section 12 of [RFC5661], which enumerates >> the requirements of pNFS layout type specifications. It is not >> normative with regards to the layout type presented in Section >> 13 of RFC5661, the block layout type [RFC5663], and the object >> layout type [RFC5664]. These are discussed here only to >> illuminate the updates made to RFC5661 Section 12.” >> > > I am fine with this change. > > > >> >>> Section 4 is not updating the pNFS requirements. That occurs in >>> Section 3. >>> >>> I can see a rewhack of the draft to have in order: >>> >>> Section 3.0 >>> Section 4.0 >>> Section 4.1 >>> Section 4.2 >>> Section 4.3 >>> A new Section 5 to introduce the following >>> Section 3.1 as Section 5.1 >>> Section 3.2 as Section 5.2 >>> Section 3.3 as Section 5.3 >>> Section 5 as Section 6 >>> … >>> >>> So the new Section 3 declares the main issue. >>> The new Section 4 uses the existing layout types to illustrate the issues. >>> The new Section 5 presents the resulting requirements. >>> >>> Hmm, the old Section 5 could be the new Section 5.0. >>> >>> Thoughts? >> >> My feeble mind can't imagine the result with this brief >> description, but your proposal could very well be a better >> organization of the material. >> >> > > Hah, “feeble”, now I have to try to remember what I wrote! > > I am going to follow Dave’s suggestion here, apply the edits above, publish > v7 and see if the WG can flow with the changes. > > >>>> There are no reasons given about why these changes are being made (was >>>> the spec language inadequate, or are you addressing bugs in the protocol, >>>> for example)? >>>> >>>> Please make it clear what the original spec says, what it should now >>>> say, and what is new advice to implementers of the file layout type. >>>> And separately discuss why the update is necessary. >>>> >>>> See Noveck's migration update doc series for examples of how to >>>> clearly describe an update to specification language. >>>> >>>> Similar comments apply to sections 4.2 and 4.3: it's not clear what >>>> is being updated. >>>> >>>> I'm not at all arguing about the technical content of this section. >>>> These are strictly observations about how this material is presented. >>>> >>>> >>>> == 5. Summary == >>>> >>>> I'm not sure what purpose this section would play once this document >>>> becomes an RFC. >>>> >>>> >>>> == 6. Security Considerations == >>>> >>>> "It may do this directly, by providing that appropriate checks be >>>> performed at the time the access is performed." >>>> >>>> Consider: >>>> >>>> ... "at the time each access is performed.” >>> >>> Ack >>> >>>> >>>> "The client the has the opportunity to re-acquire the layout" >>>> >>>> Consider: >>>> >>>> "The client has a subsequent opportunity to re-acquire the layout” >>>> >>> >>> Ack and thanks >>> >>> >>>> There is a strong discussion of client-side access checking in >>>> section 4.2. Would that be more appropriate to move into this >>>> section in a more generic form? >>>> >>> >>> >>> I’m fine with it as is. >>> >>> >>>> >>>> -- >>>> Chuck Lever >>>> >>>> >>>> >>>> _______________________________________________ >>>> nfsv4 mailing list >>>> nfsv4@ietf.org >>>> https://www.ietf.org/mailman/listinfo/nfsv4 >>>> >>> >> >> -- >> Chuck Lever Tom, all updates look good to me. Thanks for responding. -- Chuck Lever
- [nfsv4] Review comments for WGLC of draft-ietf-nf… Chuck Lever
- Re: [nfsv4] Review comments for WGLC of draft-iet… Thomas Haynes
- Re: [nfsv4] Review comments for WGLC of draft-iet… David Noveck
- Re: [nfsv4] Review comments for WGLC of draft-iet… Christoph Hellwig
- Re: [nfsv4] Review comments for WGLC of draft-iet… Thomas Haynes
- Re: [nfsv4] Review comments for WGLC of draft-iet… Thomas Haynes
- Re: [nfsv4] Review comments for WGLC of draft-iet… Thomas Haynes
- Re: [nfsv4] Review comments for WGLC of draft-iet… Chuck Lever
- Re: [nfsv4] Review comments for WGLC of draft-iet… David Noveck
- Re: [nfsv4] Review comments for WGLC of draft-iet… hch
- Re: [nfsv4] Review comments for WGLC of draft-iet… Thomas Haynes
- Re: [nfsv4] Review comments for WGLC of draft-iet… Chuck Lever
- Re: [nfsv4] Review comments for WGLC of draft-iet… David Noveck