[nfsv4] Changes to rfc5661sesqui suggested by errata 2006.
David Noveck <davenoveck@gmail.com> Wed, 18 September 2019 17:36 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 DE85D120B57 for <nfsv4@ietfa.amsl.com>; Wed, 18 Sep 2019 10:36:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.754
X-Spam-Level:
X-Spam-Status: No, score=-0.754 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, NORMAL_HTTP_TO_IP=0.001, NUMERIC_HTTP_ADDR=1.242, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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 3p56dBBENFDq for <nfsv4@ietfa.amsl.com>; Wed, 18 Sep 2019 10:36:27 -0700 (PDT)
Received: from mail-oi1-x234.google.com (mail-oi1-x234.google.com [IPv6:2607:f8b0:4864:20::234]) (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 B91AE120B4F for <nfsv4@ietf.org>; Wed, 18 Sep 2019 10:36:26 -0700 (PDT)
Received: by mail-oi1-x234.google.com with SMTP id w17so293259oiw.8 for <nfsv4@ietf.org>; Wed, 18 Sep 2019 10:36:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=3+3yRDG6khGUyMaEJgQ+RwUcVIsz14zjQjyFtfY3ijE=; b=n7SKYVYjEOE4oqmqVmTU2lbjFHa/Xc3SpOJkgodqVGNJ1eb6G5kl5fWZHjHUv6PzLz YT3qrwRFtraH0dWEoeh8BzSfRuLB03cynPBOZFdVQj2ZuplCNedXMgqkDpuVOogeh2/7 f0H2AUpra8EArtQPC6pSAO8I1jXGXcMqQEiKSCkEWJMXB9wj17sjw+QqCZVfYw8vXQFz k2xbszc1+tC8FXqk0j00jzYfaYB72q+1sp6o6KT8lux3bqvS2UOEWnlWLAIVk/Z+pu78 RJ1xmic+aL1unKVYAfOvMUw1NSw3jz/z26y/Vr8bS1z4gA8fm4eQrN6GIJV2fO6VE/4H ALzQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=3+3yRDG6khGUyMaEJgQ+RwUcVIsz14zjQjyFtfY3ijE=; b=oy0LqV3Cn7tYOFJLDBYB4sGpLAkF4F7ySSJP5Tsf/iagvS/yRebwdvsn0Rt0aEjkQ+ QnMDsfxePKg8WAZC5Zj2HujklyX2H1YIEcDSFBPS080HLNHPqvleWy6u8lfu+UqrXi3b ucSZ17ezJ176c2yinx/9vA+C2v4zky/iO9Yz6ShYDwsOAQnb/KOJRc/7TymhhumhrCKo qZkAFIxwX1NpGJxq7pMLzFPk/6Fq9Eskjog1/xCm0m999n/NApYCncreVBIWttAsLVCG /kG0RJb9ZjYlRJOmIFDrFaEKBrGs5TLtOMnpfLkfdhECsZAgFkzl9gMThnAAoU8Qih6n QIWw==
X-Gm-Message-State: APjAAAWNeDPZkx04LOo16jL/VPRwfrGxGc61TE9fLC3q13MM59VtNFzt 45Rsnvk0yrfpZoXRiLeGB2Qw8D/n/v3jZX0zTDA=
X-Google-Smtp-Source: APXvYqyURwipjLc+Ko93E1CSbpYUkjub/bU9cfzHVJTJJrTBkM6AihvCzMEhQEQrhbSTF0PaRne+0gB5WGIFJtTi7xw=
X-Received: by 2002:aca:5697:: with SMTP id k145mr2864874oib.101.1568828185745; Wed, 18 Sep 2019 10:36:25 -0700 (PDT)
MIME-Version: 1.0
From: David Noveck <davenoveck@gmail.com>
Date: Wed, 18 Sep 2019 13:36:14 -0400
Message-ID: <CADaq8jcriX1B38YMe6QXz-fTjA87OaSRgEuZGL7y7Pt-xDrK=w@mail.gmail.com>
To: Magnus Westerlund <magnus.westerlund@ericsson.com>, Chuck Lever <chuck.lever@oracle.com>
Cc: NFSv4 <nfsv4@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000b9a1570592d7468a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/38zQ4LrQRB7emiaGGaL2XDj2PM4>
Subject: [nfsv4] Changes to rfc5661sesqui suggested by errata 2006.
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
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, 18 Sep 2019 17:36:31 -0000
I've been looking at the changes it makes sense to make to rfc5611sesqui to adapt to the changes suggested by errata 2006. You can find the actual changed text below but first let me summarize the changes. The largest change consists of a rewritten section 15.1,1.3. This include the changes suggested by errata 2006 but also has the following additional changes: - It adds to the list of possible reasons to return NFS4ERR_DELAY an example (session migration described in section 11.13.3) since none of the existing examples covers the case of returning NFS4ERR_DELAY on a SEQUENCE operation. - It deals with the possible effect of NFS4ERR_DELAY on replies fetched from the replay cache, including issues related to non-idempotent requests. - It explicitly deals with requests that do not include a SEQUENCE operation. In addition, there are some limited changes: - An additional bullet item is added to the list of things that stiil need to be done in rfc5661bis (in Section 1.1), covering the erratas other than 2006. - A reference to section 15.1.1.3 is added to Section 11.12.2. - A number of references to Section 15.1.1.3 are added to Section 11.12.3. - A description of the changes made to Section 15.1.1.3 is added to Appendix B.3. If people are OK with these changes, i can submit a srfc5661sesqui-nsns-02 whenever it is appropriate. *Replaced Section 15.1.1.3 <http://15.1.1.3>:* 15.1.1.3. NFS4ERR_DELAY (Error Code 10008) For any of a number of reasons, the replier could not process this operation in what was deemed a reasonable time. The client should wait and then try the request with a new slot and sequence value. Some examples of scenarios that might lead to this situation: o A server that supports hierarchical storage receives a request to process a file that had been migrated. o An operation requires a delegation recall to proceed, so that the need to wait for for this delegation to be recalled makes processing this request in a timely fashion impossible. o A request is being performed on a session being migrated from another server as described in Section 11.13.3, and the lack of full information about the state of the session on the source makes it impossible to process the request immediately In such cases, returning the error NFS4ERR_DELAY allows necessary preparatory operations to proceed without holding up requester resources such as a session slot. After delaying for period of time, the client can then re-send the operation in question, often as part of a nearly identical request. Because of the need to avoid spurious reissues of non-idempotent operations and to avoid acting in response to NFS4ERR_DELAY errors returned on responses returned from the replier's replay cache, integration with the session-provided replay cache is necessary. There are a number of cases to deal with, each of which requires different sorts of handling by the requester and replier: o If NFS4ERR_DELAY is returned on a SEQUENCE operation, the request is retried in full with the SEQUENCE operation containing the same slot and sequece values. In this case, the replier MUST avoid returning a response containing NFS4ERR_DELAY as the response to SEQUENCE solely on the basis of its presence in the replay cache. If the replier did this, the retries would not be effective as there would be no opportunity for the replier to see whether the condition that generated the NFS4ERR_DELAY had been rectified during the interim between the original request and the retry. o If NFS4ERR_DELAY is returned on a operation other than SEQUENCE which validly appears as the first operatoion of a request, handling is similar. The request can be retired in full without modification. In this case as well, the replier MUST avoid returning a response containing NFS4ERR_DELAY as the response to an intial operation of a request solely on the basis of its presence in the replay cache. If the replier did this, the retries would not be effective as there would be no opportunity for the replier to see whether condition that generated the NFS4ERR_DELAY had been rectified during the interim between the original request and the retry. o If NFS4ERR_DELAY is returned on an operation other than the first in the request, the request when retried MUST contain a SEQUENCE operation which is different than the original one, with either the bin id or the sequence value different from that in the original request. Because requesters do this, there is no need for the replier to take special care to avoid returing an NFS4ERR_DELAY error, obtained from the replay cache. When no non- idempotent operations have been processed before the NFS4ERR_DELAY was returned, the requester should retry the request in full, with the only difference from the original request being the modfication to the slot id or sequence value in the reissued SEQUENCE operation. o When NFS4ERR_DELAY is returned on an operation other than the first within a request and there has been a non-idempotent operation processed before the NFS4ERR_DELAY was returned, the reissued request should avoid the non-idempotent operation. The request still must use a SEQUENCE operation with either a different slot id or sequence value from the SEQUENCE in the original request. Because this is done, there is no way the replier could avoid spuriously re-eecuting the non-idempotent operation since the different SEQUENCE parameters prevent the requester from recognizing that the non-idempotent operation is being retried. Note that without the ability to return NFS4ERR_DELAY and the requester's willingness to re-send when receiving it, deadlock might result. For example, if a recall is done, and if the delegation return or operations preparatory to delegation return are held up by other operations that need the delegation to be returned, session slots might not be available. The result could be deadlock. *Addition to Section 1.1:* The following is to be added as the third bullet in the list in this section: o Work would have to be done to address many erratas relevant to RFC 5661, other than errata 2006 which is addressed in this document. That errata was not deferrable because of the interaction of the changes suggested in that errata and handling of state and session migration. The erratas that have been deferred include changes originally suggested by a p[articular errata, which change consensus decisions made in RFC5661, which need to be changed to ensure compatibility with existing implementations that do not follow the handling delineated in RFC 5661. Note that it is expected that such erratas will remain relevant to implementers and the authors of an eventual rfc5661bis, despite the fact that this document, when approved, will obsolete RFC 5661 *Modifications in Section 11.12.2:* The fifth non-bulleted paragraph is modified to add a new last sentence and now reads as follows: When transferring state between the source and destination, the issues discussed in Section 7.2 of [63] must still be attended to. In this case, the use of NFS4ERR_DELAY may still necessary in NFSv4.1, as it was in NFSv4.0, to prevent locking state changing while it is being transferred. See Section 15.1.1.3 for information about appropriate client retry approaches inn the event that NFS4ERR_DELAY is returned. *Modifications in Section 11.12.3:* The sixth non-bulleted paragraph is modified to add a new last sentence and now reads as follows: An important issue is that the specification needs to take note of all potential COMPOUNDs, even if they might be unlikely in practice. For example, a COMPOUND is allowed to access multiple file systems and might perform non-idempotent operations in some of them before accessing a file system being migrated. Also, a COMPOUND may return considerable data in the response, before being rejected with NFS4ERR_DELAY or NFS4ERR_MOVED, and may in addition be marked as sa_cachethis. However, note that if the client and server adhere to rules in Section 15.1.1.3, there is no possibility of non-idempotent operations being spuriouly reissued after receiving NFS4ERR_DELAY response. The seventh non-bulleted paragraph is modified to read as it appear below. Added material is italicized: Because of the considerations mentioned above *including the rules for the handling of NFS4ERR_DELAY included in Section 15.1.1.3*, the destination server can respond appropriately to SEQUENCE operations received from the client by adopting the three policies listed below: *Addition to Appendex B.3:* The following new bulleted paragraph needs to be added at the end of Appendix B.3: o Because of the need to provide the clarifications in errata 2006 and to adapt these to properly explain the interaction of NFS4ERR_DELAY with the replay cache, a revised description of NFS4ERR_DELAY appears in Section 15.1.1.3. This errata, unlike manay other RFC5661 erratas is addressed in this document because of the extensive use of NFS4ERR_DELAY in connection with state migration and session migration.
- [nfsv4] Changes to rfc5661sesqui suggested by err… David Noveck
- Re: [nfsv4] Changes to rfc5661sesqui suggested by… Mkrtchyan, Tigran
- Re: [nfsv4] Changes to rfc5661sesqui suggested by… David Noveck
- Re: [nfsv4] Changes to rfc5661sesqui suggested by… Mkrtchyan, Tigran