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

bfields@fieldses.org (J. Bruce Fields) Thu, 27 October 2016 18:14 UTC

Return-Path: <bfields@fieldses.org>
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 37E75129643 for <nfsv4@ietfa.amsl.com>; Thu, 27 Oct 2016 11:14:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.333
X-Spam-Level:
X-Spam-Status: No, score=-2.333 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.431, SPF_HELO_PASS=-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 YygeOuRhHsJZ for <nfsv4@ietfa.amsl.com>; Thu, 27 Oct 2016 11:14:15 -0700 (PDT)
Received: from fieldses.org (fieldses.org [173.255.197.46]) by ietfa.amsl.com (Postfix) with ESMTP id AF37212967B for <nfsv4@ietf.org>; Thu, 27 Oct 2016 11:14:11 -0700 (PDT)
Received: by fieldses.org (Postfix, from userid 2815) id 12FDA822; Thu, 27 Oct 2016 14:14:11 -0400 (EDT)
Date: Thu, 27 Oct 2016 14:14:11 -0400
To: David Noveck <davenoveck@gmail.com>
Message-ID: <20161027181411.GA28977@fieldses.org>
References: <ote01sz4f8tk.fsf@athyra-vm1.us.oracle.com> <CADaq8jcSUO5rkf-4+njbk-O0Fv5gTedTRZnceVJRdz1T4zyH1Q@mail.gmail.com> <ote0oa2668pg.fsf@jurassic.us.oracle.com> <CADaq8jcOwbdc8O7am+tSdpa9hFDFfc5ULkM1qhOt9HPn7m-Ujw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CADaq8jcOwbdc8O7am+tSdpa9hFDFfc5ULkM1qhOt9HPn7m-Ujw@mail.gmail.com>
User-Agent: Mutt/1.5.21 (2010-09-15)
From: bfields@fieldses.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/6uu7zDR2be03LNkavaKVbQfVN5s>
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 18:14:16 -0000

On Thu, Oct 27, 2016 at 06:01:22AM -0400, David Noveck wrote:
> 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.

It may not be caught at xdr decoding time, but in most cases some other
part of the code will have to catch it.  E.g. 5661 18.16.4 requires
implementations to return INVAL on unknown share_access values.

(IO_ADVISE is an interesting case--the server's required to ignore
unsupported values.  That might not extend to undefined values.  But as
it's only a hint, clients could probably deal with either behavior
easily enough.)

The important principal here that we preserve interoperability with
existing implementations.  Applying that principal to specific protocol
exentensions is going to be more useful than trying to enumerate general
rules about extending different kinds of protocol elements.

--b.

> 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.