Re: [nfsv4] Remaining errata reports for rfc5661bis

David Noveck <davenoveck@gmail.com> Mon, 03 October 2022 13:33 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 A2F5EC14F733 for <nfsv4@ietfa.amsl.com>; Mon, 3 Oct 2022 06:33:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.104
X-Spam-Level:
X-Spam-Status: No, score=-2.104 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TK2wcnlV_tbI for <nfsv4@ietfa.amsl.com>; Mon, 3 Oct 2022 06:33:41 -0700 (PDT)
Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 961C9C14E514 for <nfsv4@ietf.org>; Mon, 3 Oct 2022 06:33:41 -0700 (PDT)
Received: by mail-oi1-x229.google.com with SMTP id u68so1091342oie.10 for <nfsv4@ietf.org>; Mon, 03 Oct 2022 06:33:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=rYPbK5sKVfcGm/VuQK78Wastn05UPB3xVeHY7W6QL7o=; b=cpnzETkr/swR2fyzY2Ki3ZS0Kt0uZDb4yxaVsUNwpn0SW/AanKpL3pTvch2SnQ7K89 bmodBkW1NB4iNRsCUw8wWd27Z2AbhKka9IKgHUs7LZDaSWg4q0r3+X6O6M67TnXFX022 Mgfjt+SwLMbOlJIz/uSCGoZJVwyPqX1C03hLcl6WGlzxkHiVKFsorbzqd2BxmvJy1hAa N6zz0JCJKiZGIl3YIdDlUteQ9oQTm2I/3QD+UAa2YTwrxQAbbo9IhQh6bmHH8XoX5A6c dGxghVuqE6V9JspIPDAjiX/yIzZE2moz3fLoyVQEXdcSs1jjsxiDHDQKsO8tt9NuRVU7 czpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=rYPbK5sKVfcGm/VuQK78Wastn05UPB3xVeHY7W6QL7o=; b=ih5Zp6GmxvydzDBMjquao629dKIjY1s55QSDCTVQPOs0ImKUfduouXZaf6284Hung/ F6rkOVa97qVGqGVlK1LRgOseuDegT6TDBu/FrCFNB0D/hsyQ5gg0xLxpKKRWbPMulyt7 kihaRWp1V60yjVSWm6+yJvXU5DX+khum972zOPZ8CXOumEVrRLCbx3qyY2rwAvAT9ImR 9zwBWFuNWFOJ/gEQpHekvuYZjGV2sEBmMHeROFN7q0/7qyQGrbrQV5S+3m2vVlJ0JLWm r8n287sG3Ef2n9WHYYXDQfayDQr3R8Tyn+GdCPjX7jnK2K5iK2WtadPrY2M2qWB/PKPY iI4A==
X-Gm-Message-State: ACrzQf27xV8cvDPzoWM6rEFJo1l+IxlcSRcMbRaJZpMAQH+fHYgIQopb 93luBRgQExyqR5LPteDuRwfpoQp3QYE9jvuHqWY=
X-Google-Smtp-Source: AMsMyM7w7VXD5wsJPKP88lEnoVpEPgoR4Qs0Nwuzz9BLxbuvNFZqOwQiKEPDFaFPCs+NnqdAjrqhgh0rEb3WFkQ3tk8=
X-Received: by 2002:aca:ab44:0:b0:34f:6f58:43f6 with SMTP id u65-20020acaab44000000b0034f6f5843f6mr4057930oie.98.1664804020351; Mon, 03 Oct 2022 06:33:40 -0700 (PDT)
MIME-Version: 1.0
References: <CADaq8je+0rLEL3iG_yvB1rDCsScSb4P6bEX8usxC6kiGsLMZzA@mail.gmail.com> <675FA95B-0653-4504-A4E5-ED04A48FE090@oracle.com> <CADaq8jezkjk=SxGw0ah03cvF5SnyoFqGrtex589gXtn2CXeZ=g@mail.gmail.com> <2568D044-8900-4F14-AFC3-BCF4A4CADC18@oracle.com>
In-Reply-To: <2568D044-8900-4F14-AFC3-BCF4A4CADC18@oracle.com>
From: David Noveck <davenoveck@gmail.com>
Date: Mon, 03 Oct 2022 09:33:29 -0400
Message-ID: <CADaq8jd7eZXE2EgWFTC7BFXJK5qKXg5b4SMvzZp3DCoMUMc5WA@mail.gmail.com>
To: Chuck Lever III <chuck.lever@oracle.com>
Cc: NFSv4 <nfsv4@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000040f7fc05ea216446"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/Rkc15gzcBcorTdpsB7ubOAxVFGQ>
Subject: Re: [nfsv4] Remaining errata reports for rfc5661bis
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.39
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, 03 Oct 2022 13:33:42 -0000

On Fri, Sep 30, 2022 at 1:39 PM Chuck Lever III <chuck.lever@oracle.com>
wrote:

>
>
> On Sep 30, 2022, at 12:14 PM, David Noveck <davenoveck@gmail.com> wrote:
>
>
>
> On Fri, Sep 30, 2022 at 11:00 AM Chuck Lever III <chuck.lever@oracle.com>
> wrote:
>
>>
>>
>> On Sep 30, 2022, at 9:27 AM, David Noveck <davenoveck@gmail.com> wrote:
>>
>> The following are not, for various reasons, listed as addressed in
>> draft-dnoveck-nfsv4-rfc5661bis-05.   I'd like to start wg discussion of
>> these so that we can address as many as possible in
>> draft-ietf-nfsv4-rfc5661bis-00.
>>
>>    - *2722*
>>
>> This was actually addressed in rfc8881 😊.  See Err930 (attached) for an
>> updated list
>>
>>
>>    - *2751*
>>
>> I'm kind of uncertain about the proposed new section 12.5.4.1.   Given
>> its size, it needs some working group discussion before being put in an RFC.
>>
>>
>> I agree, further WG discussion is warranted.
>>
>
I think we will haVe to have that discussion after -00 is submitted, unless
somebody is in a big hurry.  This one will prpbably remain TBD for  a
while.

>
>>
>>    - *3067*
>>
>> I'm OK with the substance of this but:
>>
>>
>>    - I'm unclear what "deprecated" means in a Proposed Standard.
>>
>> I propose simply removing the sentence containing "deprecated".
>>
>
> I'd prefer simply saying these fields are no longer used.   I intend to
> also indicate this via comments in rfc5662bis.
>
>
>>
>>    - Regarding use of "*SHOULD*", unclear what might be valid rasons to
>>       ignore the recommendation.  Also, am dubious about the capacity of non-zero
>>       values to cause harm given thathe server is ignoring them.
>>
>> I propose removing that sentence as well.
>>
>
> OK.
>
>
>>
>>
>>    - Worried about the use of lower-case "should" in he last two
>>       sentences.
>>
>> I propose replacing "should" with "MUST" in both sentences.
>>
>
> Although I'd prefer "is to",   I can live with "MUST".
>
> The big problem with these two sentences is that the condition in the
> first is a subset of the condition an you can wind up with situations in
> which it would say you "MUST" return two different errors, which is self
> contradictory 😞
>
> Propose the following but am open to replacing "is to" by "MUST":
>
> For the case where the client does not hold any previously granted
> layout,
>
> the server is to return the error NFS4ERR_BAD_LAYOUT. Otherwise, where no
> previously
> granted layout has an iomode of LAYOUTIOMODE4_RW, the server is to return
> the error NFS4ERR_BAD_IOMODE.
>
>
> That seems to eliminate the contradiction.
>
> Re: "is to" v. "MUST": Using the phrase "is to" means clients cannot rely
> on servers to recognize and return these errors. I've always preferred the
> use of MUST in these cases -- I've known too many implementers who look at
> the current text and decide the guidance is inconvenient and therefore does
> not apply to them, and that makes the text pretty meaningless.
>

As previously indicated, I can live with "MUST" so I think we can close on
this one in -00.

>
>
>
>>    - *4118*
>>
>> I'm OK with the substance of this but:
>>
>>
>>    - Think the "*SHOULD*" in the third sentence is not appropriate.
>>       Think "is to be ignored" is better.
>>
>> I propose replacing "SHOULD" with "MUST".
>>
>
> I think it is better to say this field has no function.   As far as use of
> "MUST", how could the server depend on this being ignored.
>
>
> We are making a protocol compliance statement.
>

I don't think we should be making a protocol compliance statement in the
bis.   In rfc5661, these fields had a function which was described there,
whether the RFC2119 keywords were used or not.   Now, with the five related
errata reports which are intended to "deprecate" those fields, they are no
longer used.   there is no point in describing how unused fields are to be
used, whether RFC2119.   There is no way to use them nd the spec needs to
clearly state that.


> MUST is a legitimate and conventional way of identifying an unused
> protocol element.
>

I don't believe so.


> As an example, here is language from RFC 8797 about unused bit fields:
>

Yes but this is very different case in which the bits are physically
present and essenially kept zero to reserve them for future use.

>
>       Reserved:  This 7-bit field is unused.  Senders MUST set these bits
>       to zero, and receivers MUST ignore their value.
>
>
> That document's IESG reviewers requested this formulation specifically.
>

I would agree with that given the need to make these available for
future use, but  this case is different.   In this case the fields existed
in rfc5661 but we decided that was a mistake.   The best thing to do is to
clearly explain that these fields no longer have a use, although they
continue to take up space in the XDR messages..

>
>
>>    - For the fourth sentence suggest "The client can validly finish any
>>       outstanding I/Os that reference the previously   provided
>>       device-ID-to-device-address mapping and would have to use GETDEVICEINFO to
>>       obtain the updated mapping for the previously provided
>>       device-ID-to-device-address mapping before requesting new layouts" as a
>>       replacement.
>>
>> I prefer the fourth sentence proposed in the errata. Can you say what
>> your proposed replacement fixes?
>>
>> First of all, it avoids use of lower-case "may" which is always confusing.
>
>
> But it adds "would have to use" which is awkward. A subjunctive is not
> appropriate here, and makes this text worse than it is with "may". And
> "validly finish" is also not terribly meaningful. Instead, how about:
>
> The client is permitted to finish outstanding I/O that references the
> previously provided device-ID-to-device-address mapping. Before requesting
> new layouts, the client needs to replace the previously provided
> device-ID-to-device-address mapping using a GETDEVINFO operation.
>


I'm OK with this and will include it in -00

>
>
> Is the phrase "before requesting new layouts" a protocol requirement,
>>
>
> Not really.   The client is not obligated to request new layouts even
> though most clients will.
>
>
>> and thus should it be stated using a compliance keyword?
>>
>
> I don't think so.   RFC2119 says these terms should be used "sparingly"
> which would be hard if every protocol requirement needed such a keyword.
> I  think we can specify how the protocol works without sounding like
> control freaks.
>
>
> My question simply is: is the current language specifying a point of
> interoperation? "before requesting new layouts" implies there might be an
> ordering requirement here that the implementation on one or the other side
> might choose to depend on -- or that could result in data corruption if it
> is not heeded.
>
> This text still seems somehow weak to me -- it doesn't seem to describe
> the hazards well enough (to me) but maybe I'm missing some important
> context.
>
>
>>    - *5982*
>>
>> This is tentatively addressed in -04 in a eevised description of CLOSE
>> but want to have working group dicussion of the new text before we consider
>> this done.  In any case, what is in rfc8881 us self-contradictory and needs
>> to be changed.
>>
>>
> I got my errata confused here.   There may be no errata report associated
> with this change.   Nevertheless, I urge people to look at the changes in
> REMOVE in -04/-05 to address issues with preserve-unlinked.
>
>
> Do you have a method to send us diffs?
>

I've tried to send the output rfcdiff but have always run into problems.

You can rfcdiff draft-dnoveck-nfsv4-rfc5661bis-{03,04} youself.   Except
for a few typo fixes elsewhere, the only changes are those to REMOVE, to
straighten out preserve-unlinked.

>
>
> Because the replier "is permitted (but not always obligated) to return
>> NFS4ERR_FALSE_RETRY", I read the suggestions in the original text as
>> implementation guidance, and not as Mandatory-To-Implement.
>>
>
> I agree but to me, that does not dispose of the matter.   The real issue
> is when false retries can happen.   If v4.1 truly had exactly-once
> semantics, which other parts of the spec suggest it does, the false retries
> would result only from a badly implemented peer.    As of now, we have a
> "MUST" which clients ignore due to the control-C problem.   We need to
> address that issue for the bis.
>
>
> That wasn't clear from the errata, but OK: maybe you indicated the wrong
> errata number.
>
>
> Thus I am not troubled by the original text -- implementers are free to
>> choose not to use checksumming or other techniques when direct data
>> placement is employed.
>>
>
> Yes, but if not doing so can result in data corruption, implementations
> might need to do so.   If it can't implementation guidance would have to
> make this clear.  This almost certainly will not be addressed in -00.
>
>
> --
> Chuck Lever
>
>
>
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4
>