Re: [nfsv4] feedback on draft-ietf-nfsv4-versioning-07

David Noveck <davenoveck@gmail.com> Thu, 27 October 2016 10:01 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 2FA98129D22 for <nfsv4@ietfa.amsl.com>; Thu, 27 Oct 2016 03:01:29 -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 VgxoDNtiZ_1p for <nfsv4@ietfa.amsl.com>; Thu, 27 Oct 2016 03:01:24 -0700 (PDT)
Received: from mail-oi0-x22e.google.com (mail-oi0-x22e.google.com [IPv6:2607:f8b0:4003:c06::22e]) (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 77181129D1A for <nfsv4@ietf.org>; Thu, 27 Oct 2016 03:01:24 -0700 (PDT)
Received: by mail-oi0-x22e.google.com with SMTP id y2so46919962oie.0 for <nfsv4@ietf.org>; Thu, 27 Oct 2016 03:01:24 -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=rdB/ngV0tSV3M6HOU3HpC3eeM3bLECwPZqjzuIOJGWQ=; b=MV/teLlNZX6pDGR+a7zcRP0TfzHs0ifyZdHp1tUy0WPmLTlID7IzOwqKNiiwO9Z4nu E+Gxxzx+JxfABgVRKXf/HHb4kVWH4T7YFH8vvUnS9xACBIGNzGGrgdcX5AslqtmMvvxB Qr5YawXMAcN5USmqDIhlMgpWRG5no/NFxt31H7cqz6BWE0ZBcOeG497GBJePYB4tmXvK DuB7fIfse5awNmIIskt5YbbjpZOHCl26BuMLUvPMELD8H/ThP3mt2/Vf+Jz78cQB/yvl 3y/NrpKzJZNr9qsBmc1+nNea1l21v0Wz3PDFssCFs5vkQ59CZPrxDNnjNzdIA64/UguU PnVA==
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=rdB/ngV0tSV3M6HOU3HpC3eeM3bLECwPZqjzuIOJGWQ=; b=MayHwEr9MHCwTIYJ2/iONJ9wYyTx6xx5GEO94g7LYN0yoGpia0tT6u03gcYhxz3K+s QpB4XP2LkDio/lzdX95XAnBzi9Ub0/GqLrQdth/3V/ZUsS2mFIC56G5v9q0oo/PAJMJR 5MFKe8G+V0rLNCNCBqvbm5WYP4GdngpL1sdt/WgRSSKByKAkVpVVETsJKIOJv8qUGU3p KKxF+P5UR/qVgNQlxTt86laKZE0w39ytTv7vjoTz69K1A67TWBopYg2DXEOaccvsucnA KB8fwnbdUKbJb7VENJMcFsX46UWRhHlI0FRiI6ChwmhV/B58m4GZ/+VfPion2AKnVynH EPMg==
X-Gm-Message-State: ABUngveuRHh4PO0LDkitNMvFb4DIz9bjDeOOtwp2rMj56JeKsAToM3pATGJ8VsM3XAxSvHXGlDf2jXjq/4knPQ==
X-Received: by 10.202.196.1 with SMTP id u1mr6806342oif.178.1477562483692; Thu, 27 Oct 2016 03:01:23 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.182.29.3 with HTTP; Thu, 27 Oct 2016 03:01:22 -0700 (PDT)
In-Reply-To: <ote0oa2668pg.fsf@jurassic.us.oracle.com>
References: <ote01sz4f8tk.fsf@athyra-vm1.us.oracle.com> <CADaq8jcSUO5rkf-4+njbk-O0Fv5gTedTRZnceVJRdz1T4zyH1Q@mail.gmail.com> <ote0oa2668pg.fsf@jurassic.us.oracle.com>
From: David Noveck <davenoveck@gmail.com>
Date: Thu, 27 Oct 2016 06:01:22 -0400
Message-ID: <CADaq8jcOwbdc8O7am+tSdpa9hFDFfc5ULkM1qhOt9HPn7m-Ujw@mail.gmail.com>
To: Mike Kupfer <mike.kupfer@oracle.com>
Content-Type: multipart/alternative; boundary="001a1134fb1ef959aa053fd5d282"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/vQ_yVLU61d4vzfD-4VorQ9sr-fw>
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>
Subject: Re: [nfsv4] feedback on draft-ietf-nfsv4-versioning-07
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: Thu, 27 Oct 2016 10:01:29 -0000

I think we are close to agreement regarding how to address the issues in
section 9.

Regarding strings/enums, I don't think we want to try to expand the scope
of what can be done in an extension.  The -05 draft allowed knowledge of an
additional XDR element as part of an extension to signal whether a field
use change such as one to the set of valid values of a string was present.
However, the working group found that too complicated and in -06 I focused
 on the simplest extension model, in which each of the kinds of changes
allowed by the original minor versioning approach was allowed in an
extension and other things required a minor version.  That might not be the
most flexible approach but it is way better than where we are now, with
every change requiring a minor version.

Regarding extending enums, it is true that -07 seems to allow this without
saying how to mange it in general.  It  only discusses expanding switches
and provides specific rules regarding error codes, operation codes, and
attribute numbers.

The real problem with allowing general enum extensions is that XDR
implementations do not check that the values in the fields are valid.  As a
result, you cannot test that the responder knows about the new values by
issuing a request containing the new value, as you can with extensions to
switches.

As a result, enum fields are essentially ints, and the restriction to the
values listed in the XDR file is much like an in-spec-text restriction
regarding the contents of that particular field. I think the spec should
make clear it that changing the set of allowed values requires a new minor
version.

> But then I'm not into country music[1]. :-)

Neither am I.

On Wed, Oct 26, 2016 at 6:34 PM, Mike Kupfer <mike.kupfer@oracle.com> wrote:

> David Noveck <davenoveck@gmail.com> writes:
>
> >> but I think we should be able to extend a list of known literal
> >> strings in an extension.
> [...]
> > If you are going to allow those that do or do not support a extension
> with
> > regard to the strings accepted, you have to provide analogous means to
> find
> > out what is supported.
>
> Hmm.  I was thinking that adding a new string would be similar to adding
> a new value to an enum.  But I now see that although Section 4.2 says
> that an extension can add values to enums, the document doesn't say how
> that would be managed.
>
> > I fear that changing the document at this point to
> > provide for that would be difficult to do, especially in a case where
> > strings are added to attribute values.  In that case you need to know
> > whether the client will accept them on GETATTR as well as whether the
> > server will accept them on SETATTR.
> >
> > If you want to have variant/extended handling of the set of strings, you
> > could define a new attribute that allowed the new strings together with
> > retaining  an older one that accepted only the old strings.  I think this
> > would give you what you need, leaving the extension framework as it is.
>
> Yes, the server would need to know that the client supports a particular
> extension before returning values that are defined by that extension.
>
> Adding a new attribute or operation that knows about the extended type
> sounds reasonable to me.  That approach could be used for both new
> strings and new values in an enum.
>
> So it sounds like this is just an editorial issue, to clarify how new
> enum values or string literals could be added by an extension.
>
> Here's a suggestion for text to add at the end of Section 4.2:
>
>   If an enum may be contained in an RPC response, an extension that adds
>   one or more new values to the enum must additionally provide a way for
>   the responder to determine that the requester knows about the
>   extension.  For example, an extension that defines a new file type
>   could define new operations to use instead of GETATTR and SETATTR.
>   The GETATTR and SETATTR operations would continue to support just the
>   original set of file types.  The new operations would support the
>   original file types as well as the new one.
>
> I'd still like to see the ability to extend a list of well-known strings
> without changing the minor version.  I think that adding the following
> text to the first bullet item in Section 5.1 would cover it:
>
>   In some cases, an extension may add new string literals to a set of
>   well-known strings, similar to the way that new values may be added to
>   an enum.  Consideration must be given to whether the string might
>   already be in use.  And as with enums, there are additional
>   requirements if the string could be included in an RPC response (see
>   Section 4.2 for details).
>
> >> At this point the client could ask about a correction to feature
> >> FOO, but it doesn't know about any such correction.
> >
> > Good point.  The difference from the rest of the extension model is that
> > the old client, having been written before the correction was identified,
> > has no knowledge of the potential non-support and thus cannot test for it
> > in advance.
> >
> >>It seems like the server must support both the uncorrected and
> >> corrected versions of the feature.
> >
> > Lets call the version subject to correction 4.x.
> >
> > 4.x requires the uncorrected version and and cannot require the corrected
> > version.
>
> Right.  I meant that *if* the server supports the corrected version, it
> must still support the uncorrected version.
>
> > The working group would have a number of options in 4.x+1:
> >
> > Making the corrected version REQUIRED and the uncorrected version
> mandatory
> > to not implement.  This would force older clients to use and servers to
> > support the corrected version. befire adopting 4.x+1
> >
> > Making the corrected version REQUIRED and the uncorrected version
> OPTIONAL
> >  This would force server to support the corrected version but 4.x clients
> > could have a reprieve and could simply send the 4.x request as 4.x+1,
> with
> > no guarantee of support.  However, it would test for support of the
> > uncorrected version as an OPTIONAL feature.
>
> And if the uncorrected version is not supported, the client would fall
> back to 4.x.
>
> > Making both the corrected and uncorrected version OPTIONAL with the
> > constraint that at least one has to be supported.  This would allow both
> > uncorrected clients and servers to be easily converted to 4.x+1,
> However,
> > there would be no guarantee of interoperability for servers or clents
> only
> > prepared to deal with the corrected or corrected variant.
>
> Yeah.  So I think we'd want to discourage that last choice.
>
> > With regard to WGLC, we have two options:
> [...]
> I have no opinion on WGLC for any of the I-Ds.  But then I'm not into
> country music[1]. :-)
>
> cheers,
> mike
>
> [1] http://www.wglc.net
>