Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-09
karen deitke <karen.deitke@oracle.com> Mon, 24 April 2017 14:36 UTC
Return-Path: <karen.deitke@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 C124513156B for <nfsv4@ietfa.amsl.com>; Mon, 24 Apr 2017 07:36:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.202
X-Spam-Level:
X-Spam-Status: No, score=-4.202 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, 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 9L5M7RSduEoO for <nfsv4@ietfa.amsl.com>; Mon, 24 Apr 2017 07:36:56 -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 762A413156A for <nfsv4@ietf.org>; Mon, 24 Apr 2017 07:36:56 -0700 (PDT)
Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v3OEatRo012618 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for <nfsv4@ietf.org>; Mon, 24 Apr 2017 14:36:55 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id v3OEatgc022572 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for <nfsv4@ietf.org>; Mon, 24 Apr 2017 14:36:55 GMT
Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v3OEas9g026906 for <nfsv4@ietf.org>; Mon, 24 Apr 2017 14:36:55 GMT
Received: from [10.159.114.163] (/10.159.114.163) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 24 Apr 2017 07:36:54 -0700
To: nfsv4@ietf.org
References: <CADaq8jdkGgL+H-yoO-+bTNbSYiE_1us9cN5SXY8QV0gfYfK0Ng@mail.gmail.com> <ce42960d-d1e9-8fa6-e98e-3e9b1a2af7d6@oracle.com> <f66e8e66-ba54-ff57-945a-7951eab2f8b1@talpey.com> <BB65A737-BDBD-4A23-9CEE-2EA153293842@oracle.com> <33468014-6695-a2da-1af8-f1f355fbe986@talpey.com> <CADaq8jcJJQ3TiVX6fFURg22YgNg=Cd7ezNQewjt6fgNK4LrPVg@mail.gmail.com> <F417EA11-D49F-420D-A64F-AE6A382B920C@oracle.com> <7213a956-6157-d0a6-432d-1da8d555d8e9@talpey.com>
From: karen deitke <karen.deitke@oracle.com>
Organization: Oracle Corporation
Message-ID: <413d4364-6652-d571-7377-fc2d7a266838@oracle.com>
Date: Mon, 24 Apr 2017 08:36:42 -0600
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
MIME-Version: 1.0
In-Reply-To: <7213a956-6157-d0a6-432d-1da8d555d8e9@talpey.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Source-IP: userv0021.oracle.com [156.151.31.71]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/IPkQZjuWacqJJnjNomUUD94qv0o>
Subject: Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-09
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: Mon, 24 Apr 2017 14:36:59 -0000
On 4/24/2017 5:56 AM, Tom Talpey wrote: > On 4/21/2017 10:43 AM, Chuck Lever wrote: >> I agree that SHOULD/MAY makes things cloudier, and does not >> seem to align with well-defined RFC2119 usage. >> >> Another way we've dealt with similar disagreements between >> specification and implementation is to decide that one of >> the implementations is incorrect. >> >> Can we agree that: >> >> - GARBAGE_ARGS is a bit of a layering violation, though it's >> understandable why it might be returned >> >> - RPC clients are already prepared for GARBAGE_ARGS > > Are you certain of this? And out of curiosity, what is returned > to the consumer for GARBAGE_ARGS versus ERR_CHUNK? Consumer will see EIO for both. > >> >> - In RPC-over-RDMA Version One, we are not trying to recover >> (in the sense of resending a simpler COMPOUND) but are rather >> trying to ensure the offending RPC is properly terminated on >> the client, and does not further block other RPCs or deadlock >> the transport >> >> Thus I claim it is harmless if a server returns GARBAGE_ARGS >> instead of ERR_CHUNK. > > "Harmless" is a bit relative. The operation fails, through no fault > of the consumer. And, frankly, in a very mysterious way. > > Again, I think there is more to say here. It's a limitation of the > protocol whose implications should be made clear (contraining the > complexity of COMPOUNDs, limiting scatter/gather lengths, etc). > > Tom. > > >> >> As a result, I can change the Read list text in S5.4.1 to be >> the same as the Write list text, removing the mention of >> GARBAGE_ARGS. >> >> Would that sit comfortably with everyone? >> >> >>> On Apr 20, 2017, at 7:21 PM, David Noveck <davenoveck@gmail.com> wrote: >>> >>>> The "or" is a similar situation, it prescribes a choice, which >>>> does not define a protocol. >>> >>> Fair enough, but the point that needs to be made is that, with >>> regard to Version One, Chuck and the working group is not >>> free to define a protocol. As a result we have the kind of >>> ugliness you object to, but it is inherent in the choice to try to >>> revive Version One as-is. >>> >>>> If an NFS version 4 client sends an RPC Call with a Read list that >>>> contains more chunks than an NFS version 4 server is prepared to >>>> process, the server SHOULD reject the request by responding with an >>>> RDMA_ERROR message with the rdma_err value set to ERR_CHUNK. The >>>> server MAY reject the RPC with an RDMA_MSG message containing an RPC >>>> Reply with an accept status of GARBAGE_ARGS. >>> >>> I think I know what you intend here and I've seen stuff like this in >>> RFCs but I don't >>> wthink e can do this because this is not in line with the >>> definitions of "SHOULD" >>> and "MAY" that appear in RFC2119. >>> >>> "SHOULD" means that you are supposed to do something but can avoid >>> it if >>> you have a good reason and are aware of the consequences of not >>> doing it. >>> In this case the "good" reason is that someone coded the implementation >>> to do something else, which is not all that good a reason. The >>> consequences of >>> returning the GARBAGEARGS are exactly zero, since the client has to >>> be prepared >>> for either it or ERR_CHUNK. >>> >>> "MAY" means the implementation can choose to do the action or not, >>> which is line >>> with the reality here but essentially contradicts the SHOULD. >>> >>>> This at least makes it clear which response is "preferred". >>> >>> But it is isn't really the job of the RFC2119 terms to say which is >>> "preferred" or >>> "'preferred'". These terms are supposed to describe >>> interoperability and the >>> interoperability situation is that the server MUST return ERR_CHUNK or >>> GARBAGEARGS and the client needs to be prepared for either. That is >>> the >>> unpleasant reality. If you want to indicate a preference, you can >>> say something >>> like: >>> • Returning ERR_CHUNK is preferrable. >>> • Returinng ERR_CHUNK is more in line with the appropriate >>> protocol layering since this issue relates to a limitation of the >>> transport implementation. >>> • Use of GARBAGEARGS is an unfortunate artifact of >>> inappropriately layered implementations and is only allowed for >>> reasons of compatibility with existing implementations. It is >>> desirable to avoid it. >>>> And one would hope a future draft would decide. >>> >>> Not sure what draft you are thinking of. I don't see us doing an >>> rfc5667bisbis (rfc5667tris). >>> >>> By the time we did that, the implementations with these restrictions >>> will probably be gone. >>> >>>> I have a second question though. How does the client determine what is >>>> the actual error? As in, how many chunks were allowed? >>> >>> This is not fixable in Version One. It would be in Version Two, but >>> by then >>> the need will probably be gone. >>> >>>> Does the upper >>>> layer have to recover, and if so what are the implications? >>> >>> I think something could be put in to indicate that clients should >>> break up COMPOUNDS >>> so the only have a single chunk each. >>> >>>> Yes, I know 5667 did not explore this very well. >>> >>> It didn't explore it at all. And 5666's error reporting facilities >>> were extremely limited. >>> >>>> Mea culpa. >>> >>> I don'tt think you have anything to apologize for. >>> >>> >>> >>> >>> On Thu, Apr 20, 2017 at 5:28 PM, Tom Talpey <tom@talpey.com> wrote: >>> >>> >>> On 4/19/2017 11:14 AM, Chuck Lever wrote: >>> Hi Tom- >>> >>> On Apr 18, 2017, at 11:08 PM, Tom Talpey <tom@talpey.com> wrote: >>> >>> I noticed the same thing, and I'll add that the MUST reject condition >>> is very confusing because it allows an "or". In my opinion a MUST is >>> always a single requirement, never ambiguous. >>> >>> I agree this kind of thing is tricky. I wrote it as "the server MUST >>> reject the RPC". That's the single requirement. The choice is how the >>> rejection is conveyed to the client. >>> >>> The statement "MUST reject" is not testable. So, while it may be >>> understood what is intended, there is nothing implementable in the >>> MUST. The "or" is a similar situation, it prescribes a choice, which >>> does not define a protocol. >>> >>> Is there some reason you want to allow such a choice? I think you'll >>> find that, worded properly, it becomes actually much less implementable >>> and interoperable than you may think. >>> >>> The Solaris server can return an RPC-level error in cases like this. >>> >>> Well, this is happening because the Solaris server is (probably) just >>> handing the chunk list up to the RPC layer, and it's the RPC (XDR) >>> processing that detects any problem. >>> >>> On the other hand, an implementation could do the opposite, it could >>> process the chunks at the lower layer, before ever invoking RPC >>> processing. This would naturally lead to a non-RPC error. >>> >>> The challenge in defining the protocol is to hide these possibilities. >>> >>> I think there are similar choices allowed in rfc5666bis. Let's say >>> that in a perfect world, I would go with only ERR_CHUNK, but I'm >>> documenting existing implementation behavior here. >>> >>> I'm not sure it matters to the client: both errors are permanent and >>> the RPC is terminated on the client. >>> >>> I'm open to alternatives. >>> >>> The icky way to do this is to split into two weak requirements. >>> >>> If an NFS version 4 client sends an RPC Call with a Read list that >>> contains more chunks than an NFS version 4 server is prepared to >>> process, the server SHOULD reject the request by responding with an >>> RDMA_ERROR message with the rdma_err value set to ERR_CHUNK. The >>> server MAY reject the RPC with an RDMA_MSG message containing an RPC >>> Reply with an accept status of GARBAGE_ARGS. >>> >>> This at least makes it clear which response is "preferred". And one >>> would hope a future draft would decide. >>> >>> I have a second question though. How does the client determine what is >>> the actual error? As in, how many chunks were allowed? Does the upper >>> layer have to recover, and if so what are the implications? >>> >>> Yes, I know 5667 did not explore this very well. Mea culpa. >>> >>> >>> >>> Tom. >>> >>> >>> >>> On 4/18/2017 6:32 PM, karen deitke wrote: >>> Hi Chuck, its unclear what you mean by "is prepared to process" in >>> the text below. >>> Other than that, looks good. >>> >>> Karen >>> >>> 5.4.1 >>> If an NFS version 4 client sends an RPC Call with a Write list that >>> contains more chunks than an NFS version 4 server is prepared to >>> process, the server MUST reject the RPC by responding with an >>> RDMA_ERROR message with the rdma_err value set to ERR_CHUNK. >>> >>> >>> If an NFS version 4 client sends an RPC Call with a Read list that >>> contains more chunks than an NFS version 4 server is prepared to >>> process, the server MUST reject the RPC by responding with an >>> RDMA_MSG message containing an RPC Reply with an accept status of >>> GARBAGE_ARGS, or with an RDMA_ERROR message with the rdma_err value >>> set to ERR_CHUNK. >>> >>> >>> On 4/18/2017 1:21 PM, David Noveck wrote: >>> *Overall Evaluation* >>> * >>> * >>> Major improvement over RFC5667. Almost ready to ship. No technical >>> issues. >>> >>> A lot of my comments are basically editorial and are offered on a >>> take-it-or-lease-it basis. >>> >>> I think some clarification in Section 5.4.1 is needed although not >>> necessarily in the ways suggested below, >>> >>> *Comments by Section* >>> *5.4.1. Multiple DDP-eligible Data Items* >>> Giventhat READ_PLUS no longer has any DDP-eligible data items, the >>> situation described in the fifth bullet can no longer arise. I suggest >>> deleting the bullet. >>> The penultimate paragraph can be read as applying to some situations >>> in which it shouldn't and where the extra chunks would very naturally >>> ignored. For example, if you had on write chunk together with a READ >>> operation which failed, the server would have more chunks (i.e. one) >>> than the number it is prepared to process (i.e. zero). Suggest, as a >>> possible replacement: >>> >>> Normally, when an NFS version 4 client sends an RPC Call with a >>> Write list that contains multiple chunks. each such, when matched >>> with a DDP-eligible data item in the response, directs the >>> placement of the data item as specified by >>> [I.D.-nfsv4-rfc5666bis]. When there are DDP-eligible data items >>> matched to write chunks that an NFS version 4 server is not >>> prepared to process, the server MUST reject the RPC by responding >>> with an RDMA_ERROR message with the rdma_err value set to ERR_CHUNK. >>> >>> With regard to the last paragraph, I am curious that this paragraph, >>> unlike the previous one, allows GARBGEARGS. Is this so because that >>> would be allowed if the chunks in question had offsets other than >>> those that correspond to DDP-eligible data items? If so, please >>> consider the following possible replacement. >>> >>> Normally, when an NFS version 4 client sends an RPC Call with a >>> Read list that contains multiple chunks, each such, when properly >>> matched with a DDP-eliigible data item in the request, directs the >>> fetching of the the data item as specified by >>> [I.D.-nfsv4-rfc5666bis]. When there are DDP-eligible data items >>> matched to read chunks that an NFS version 4 server is not >>> prepared to process, the server MUST reject the RPC by responding >>> with an RDMA_ERROR message with the rdma_err value set to ERR_CHUNK. >>> >>> *5.6. Session-Related Considerations* >>> In the third sentence of the second paragraph, suggest replacing "no >>> different" by "not different". >>> In the last sentence of the last paragraph, suggest replacing "is not" >>> by "were not" >>> >>> >>> _______________________________________________ >>> nfsv4 mailing list >>> nfsv4@ietf.org >>> https://www.ietf.org/mailman/listinfo/nfsv4 >>> >>> >>> >>> _______________________________________________ >>> nfsv4 mailing list >>> nfsv4@ietf.org >>> https://www.ietf.org/mailman/listinfo/nfsv4 >>> >>> >>> _______________________________________________ >>> nfsv4 mailing list >>> nfsv4@ietf.org >>> https://www.ietf.org/mailman/listinfo/nfsv4 >>> >>> -- >>> Chuck Lever >>> >>> >>> >>> _______________________________________________ >>> nfsv4 mailing list >>> nfsv4@ietf.org >>> https://www.ietf.org/mailman/listinfo/nfsv4 >>> >>> >>> >>> _______________________________________________ >>> nfsv4 mailing list >>> nfsv4@ietf.org >>> https://www.ietf.org/mailman/listinfo/nfsv4 >>> >>> _______________________________________________ >>> nfsv4 mailing list >>> nfsv4@ietf.org >>> https://www.ietf.org/mailman/listinfo/nfsv4 >> >> -- >> Chuck Lever >> >> >> >> _______________________________________________ >> nfsv4 mailing list >> nfsv4@ietf.org >> https://www.ietf.org/mailman/listinfo/nfsv4 >> > > _______________________________________________ > nfsv4 mailing list > nfsv4@ietf.org > https://www.ietf.org/mailman/listinfo/nfsv4
- [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-09 David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… karen deitke
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Trond Myklebust
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… spencer shepler
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Tom Talpey