Subject: [nfsv4] RFC 8276 and minor versions

From: "van der Linden, Frank" <[email-masked]>
Date: Fri, 27 Mar 2020 17:05:18 +0000

Hi everyone,

Quick question:

It's my reading of RFC 8276 and RFC 8178 that 8276 (user extended attributes) extends the (then) current minor version - 4.2. So 4.1 or 4.0 servers/clients can not use this functionality.

Is that correct? The wording doesn't seem to be that clear,  but I might have missed something, so hence my question.

This came up because there's no technical issue with implementing 8276 on top of 4.1 or even 4.0. But my reading is that this would violate the RFCs.

Thanks,

- Frank

---

From: David Noveck <[email-masked]>
Date: Sun, 29 Mar 2020 16:09:02 -0400

On Fri, Mar 27, 2020 at 1:05 PM van der Linden, Frank <fllinden=
[email-masked]> wrote:

> Hi everyone,
>
> Quick question:
>
> It's my reading of RFC 8276 and RFC 8178 that 8276 (user extended
> attributes) extends the (then) current minor version - 4.2.

Yes.

> So 4.1 or 4.0 servers/clients can not use this functionality.
>

A server or client that did that would not using or implementing 4.0 or
4.1.  It would be implementing its own private protocol.

Is that correct?

It certainly was the intention when RFC8178 was written.

I'm not sure that the right decision was made but realistically, the
concept of extendible versions was so new that it would have been hard to
declare an existing minor versions extensible post facto.

The wording doesn't seem to be that clear,

I think it is clear enough.  RFCs 5661 and 7530 are presented as fixed,
with fixed sets of operations and fixed (in RFCs 5662 and 7531)  XDR files
that defined them.   There is nothing in RFC8178 that changes that or calls
it into question.

but I might have missed something, so hence my question.

You didn't miss anything but it appears I did.   At the time, extensible
versions were considered so weird/dubious that I never thought to
clearly state that existing minor versions could not be extended.  At the
time it seemed too *obvious *to state explicitly.

This came up because there's no technical issue with implementing 8276 on
> top of 4.1 or even 4.0.

True.

> But my reading is that this would violate the RFCs.
>
> True, but RFCs can be changed if the working group feels it is worth the
effort.

For v4.0, it woyld be a substantial effort which probably isn't worth it.

For v4.1, it is not worth it for a complementary reason.   It is easy to
take a v4.1 server and turn it into a v4.2 server that does not support any
of the v4.2 OPTIONAL extensions.   It just has to recognize them, parse the
ops, and return NFS4ERR_NOTSUPP if the minor version is 2.   At that point
it has become a v4.2 server and the ops within rfc8276 can be
implemented within it in accord with RFC8178.

Thanks,
>
> - Frank
>
> _______________________________________________
> nfsv4 mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/nfsv4
>

---

From: Thomas Haynes <[email-masked]>
Date: Sun, 29 Mar 2020 20:19:15 -0700

One thing to remember as far as RFC7862 is concerned, the simplest NFSv4.2 client or server is to take an existing NFSv4.1 implementation and make everything optional.

So a NFSv4.1 client can be extended by bumping the allowed minor version from 1 to 2 and not invoking any of the new NFSv4.2 semantics.

And the NFSv4.1 server can easily be extend by bumping the minor version and returning NFS4ERR_NOTSUPP to any of the new ops and also be prepared to handle the new attributes.

So you cannot take a NFSv4.0 implementation and only support extended attributes, but you can take a NFSv.1 and trivially only support extended attributes.

---

From: "Mkrtchyan, Tigran" <[email-masked]>
Date: Tue, 31 Mar 2020 15:49:41 +0200 (CEST)

Hi Frank,

thanks for bringing this up.

----- Original Message -----
> From: "Dave Noveck" <[email-masked]>
> To: "van der Linden, Frank" <fllinden=[email-masked]>
> Cc: "NFSv4" <[email-masked]>
> Sent: Sunday, March 29, 2020 10:09:02 PM
> Subject: Re: [nfsv4] RFC 8276 and minor versions

> implemented within it in accord with RFC8178.

To me it's just looks weird for a server to claim to support 4.2 and respond with
NFS4ERR_NOTSUPP to all operations just to add a support for capability that is
independent of any 4.2 functionality. However, in did not a big deal.

Tigran.