Re: [nfsv4] rfc5667bis open issues

David Noveck <davenoveck@gmail.com> Fri, 23 September 2016 00:51 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 2EC8B12B8F1 for <nfsv4@ietfa.amsl.com>; Thu, 22 Sep 2016 17:51:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-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 hf0IKwKwGTn3 for <nfsv4@ietfa.amsl.com>; Thu, 22 Sep 2016 17:51:48 -0700 (PDT)
Received: from mail-oi0-x236.google.com (mail-oi0-x236.google.com [IPv6:2607:f8b0:4003:c06::236]) (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 1D4DC12B559 for <nfsv4@ietf.org>; Thu, 22 Sep 2016 17:51:48 -0700 (PDT)
Received: by mail-oi0-x236.google.com with SMTP id t83so117868106oie.3 for <nfsv4@ietf.org>; Thu, 22 Sep 2016 17:51:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=UDEOAM4auF+gKxuo3AUCbWgkIxdmXHoVu7rXxpYCIio=; b=uaHlI10vMoUx2ItYZrZMqEQAszobgKkxgQHAOQK2R4ccimScyVxf7n1kELQDt4WD0X FaYm5JcAargDe62bPRb5UHP1iGG2pVeNro9ixiGun6OYK0YaqmAvEB/qALMjW8V/IoTt KcznIEqrQpwCgpMkap9KNL4aSah2LrC/RCabe6YDNFQG61+5CvbWdBo7r52KWtYKkaPh n2FsXFipbJkLIXiwnzITDlQ9TdpQFbW9NhMAMmyl4L5xpf5GjyM5OCGGofHq9YaT3TK5 pYCKplKfcHcdqjX2n8SKGXf8EJTD/yRF3dJuB/0M5B1aUaaNrlYt6JEHSko7yo7I7xsu rFKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=UDEOAM4auF+gKxuo3AUCbWgkIxdmXHoVu7rXxpYCIio=; b=X1nlL0PWscRAcGBOsBy4ydYoE42ziSo7am4s2rzpBarz8f7JZHO3gQBA21fTiBjIEL cy2B2OjoNMiPyP46yLaD7bJZ38oTkGIaq+GuqdMG0r2ZYvyqCpsgGfJ8tF72vS1wKUmE CcdE+cvG1KzlaLmCSyqRExyHGwvB5KBXbOiRwqsqZOL4FNt5fIf2mx6bbO9iEWQFE/D4 2t+niKMU+8SrYyLDwPlfrs1qmwCh6EffndssoOft6qMAQ9v/PNc5JgzAFqrjcSyw6V0V FvVYB7w/dvOCvrEzCDkUXgS/PBotEnS9BGK6cTvJMTJ1n5kA+Yda46DmYw7C60IMpZRA bsdg==
X-Gm-Message-State: AE9vXwPc8GkXIjt67bI/XLhE0ttWXJSAnNAOijW6oU/NkuHoYGFDb3N8zZ9H/2daWQEEf99hDjoAxKR3jY8yZQ==
X-Received: by 10.202.192.5 with SMTP id q5mr6206743oif.71.1474591907365; Thu, 22 Sep 2016 17:51:47 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.182.192.10 with HTTP; Thu, 22 Sep 2016 17:51:46 -0700 (PDT)
In-Reply-To: <65E80EDE-6031-4A83-9B73-3A88C91F8E6A@oracle.com>
References: <15F62327-B73F-45CF-B4A5-8535955E954F@oracle.com> <65E80EDE-6031-4A83-9B73-3A88C91F8E6A@oracle.com>
From: David Noveck <davenoveck@gmail.com>
Date: Thu, 22 Sep 2016 20:51:46 -0400
Message-ID: <CADaq8jc50Ca6eDZ3D6zRvfG+Q2DngNN6+mN9WKXj9AS=d1iQVg@mail.gmail.com>
To: Chuck Lever <chuck.lever@oracle.com>
Content-Type: multipart/alternative; boundary="001a113dddfad3d248053d222eac"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/HxsaIHxKioliXRS0MyrSg0TVhTI>
Cc: NFSv4 <nfsv4@ietf.org>
Subject: Re: [nfsv4] rfc5667bis open issues
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: Fri, 23 Sep 2016 00:51:50 -0000

> Does this count as a dropped RPC reply, such that an NFSv4 server
> would have to drop the connection?

I don't see any reason why it should.  Apart from RPC-over-RDMA, does this
apply to other XDR decode issues on the server? After all, it is getting a
reply, even if the content is essentially "I don't understand the request."

> When an NFS server returns one of these responses, does it
> have to enter the reply in its DRC ?

I should hope not.  The purpose of the DRC is to prevent repeated execution
of non-idempotent requests.  A request that you can't decode does not
change any state on the server.

> What if any implications are there for an NFSv4.1 session
> (slot retired? ignored?)

Why does this have to have to be addressed in 5667bis?  I don't see why XDR
decode errors need to be addressed differently in the RPC-over-RDMA case.

> The current text of rfc5666bis (Section 5.3.2) suggests that when
> multiple Write chunks are provided for an RPC, and the responder
> doesn't use one of them, it should use that chunk for the next
> DDP-eligible XDR data item.

It does say that and the treatment there is limited to the case of multiple
write chunks.  The treatment for the analogous case when there is a single
write chunk is addressed in 4.4.6.2.  Th treatment is the same:  each
DDP-eligible item is matched with the first available write chunk until
either there are no more write chunks or no more DDP-eligible items in the
reply.

> The problematic text is actually this part of rfc5666bis:

I don't see why this is described as "problematic".  Is there a suggestion
that we might change this text to something less problematic?  I don't see
how to do that.  I believe we should leave the text as it is.

Within Version One, there is no way to tie write chunks to particular
DDP-eligible items.  While one might think of that as a problem it is not
one that can be addressed in Version One or in rfc5667bis.


On Thu, Sep 22, 2016 at 6:36 PM, Chuck Lever <chuck.lever@oracle.com> wrote:

>
> > On Sep 22, 2016, at 3:10 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
> >
> > I'm preparing a new revision of rfc5667bis, and a couple of issues have
> > arisen:
> >
> > 1. Reporting RPC-over-RDMA decoding errors on NFSv4
> >
> > The current text says the NFS server can return an RPC GARBAGE_ARGS
> > reply, or an RPC-over-RDMA level ERR_CHUNK reply.
> >
> > Does this count as a dropped RPC reply, such that an NFSv4 server
> > would have to drop the connection?
> >
> > When an NFS server returns one of these responses, does it have to
> > enter the reply in its DRC ? What if any implications are there for
> > an NFSv4.1 session (slot retired? ignored?)
> >
> >
> > 2. Skipping Write chunks in an NFSv4 COMPOUND
> >
> > The current text of rfc5666bis (Section 5.3.2) suggests that when
> > multiple Write chunks are provided for an RPC, and the responder
> > doesn't use one of them, it should use that chunk for the next
> > DDP-eligible XDR data item.
>
> The problematic text is actually this part of rfc5666bis:
>
> 4.4.6.2.  Unused Write Chunks
>
>    There are occasions when a requester provides a Write chunk but the
>    responder is not able to use it.
>
>    For example, an Upper Layer Protocol may define a union result where
>    some arms of the union contain a DDP-eligible data item while other
>    arms do not.  The responder is REQUIRED to use requester-provided
>    Write chunks in this case, but if the responder returns a result that
>    uses an arm of the union that has no DDP-eligible data item, the
>    Write chunk remains unconsumed.
>
>    If there is a subsequent DDP-eligible data item, it MUST be placed in
>    that unconsumed Write chunk.  The requester MUST provision each Write
>    chunk so it can be filled with the largest DDP-eligible data item
>    that can be placed in it.
>
>
> > This could be a problem for READ_PLUS. The client has no way of
> > predicting whether the server will return a CONTENT_DATA arm (which
> > would consume a Write chunk) or a CONTENT_HOLE arm (which would not).
> >
> > I think a better approach would be for the binding to specify that
> > if a Write chunk is provided for a READ_PLUS operation, the server
> > consumes that chunk:
> >
> > - by returning CONTENT_DATA in that chunk
> >
> > - by returning an empty chunk for CONTENT_HOLE
> >
> > If the client provides an empty chunk in that position, the
> > READ_PLUS result is returned inline.
> >
> > Opinions?
>
> --
> Chuck Lever
>
>
>
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4
>