[nfsv4] What does NFS4ERR_NOTSUPP mean?
Thomas Haynes <thomas@netapp.com> Mon, 25 April 2011 22:23 UTC
Return-Path: <Tom.Haynes@netapp.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 CBE64E06B2 for <nfsv4@ietfa.amsl.com>; Mon, 25 Apr 2011 15:23:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.976
X-Spam-Level:
X-Spam-Status: No, score=-9.976 tagged_above=-999 required=5 tests=[AWL=0.023, BAYES_00=-2.599, J_CHICKENPOX_34=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qy4GfQRK9FRA for <nfsv4@ietfa.amsl.com>; Mon, 25 Apr 2011 15:23:14 -0700 (PDT)
Received: from mx2.netapp.com (mx2.netapp.com [216.240.18.37]) by ietfa.amsl.com (Postfix) with ESMTP id 3B3E6E06A9 for <nfsv4@ietf.org>; Mon, 25 Apr 2011 15:23:14 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.64,266,1301900400"; d="scan'208";a="543624641"
Received: from smtp2.corp.netapp.com ([10.57.159.114]) by mx2-out.netapp.com with ESMTP; 25 Apr 2011 13:55:36 -0700
Received: from sacrsexc1-prd.hq.netapp.com (sacrsexc1-prd.hq.netapp.com [10.99.115.27]) by smtp2.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id p3PKta8W007953; Mon, 25 Apr 2011 13:55:36 -0700 (PDT)
Received: from rtprsexc2-prd.hq.netapp.com ([10.100.161.115]) by sacrsexc1-prd.hq.netapp.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 25 Apr 2011 13:55:36 -0700
Received: from RTPMVEXC1-PRD.hq.netapp.com ([10.100.161.111]) by rtprsexc2-prd.hq.netapp.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 25 Apr 2011 16:55:35 -0400
Received: from alex3-lxp.hq.netapp.com ([10.58.56.226]) by RTPMVEXC1-PRD.hq.netapp.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 25 Apr 2011 16:55:34 -0400
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: Thomas Haynes <thomas@netapp.com>
In-Reply-To: <7C4DFCE962635144B8FAE8CA11D0BF1E0417416F75@MX14A.corp.emc.com>
Date: Mon, 25 Apr 2011 15:55:32 -0500
Content-Transfer-Encoding: quoted-printable
Message-Id: <9723EA95-A955-4969-B116-48B2AC55A476@netapp.com>
References: <B637DE01-CC65-4393-8F57-3C0422E4E6AA@netapp.com> <41be156de393c5e2948b0222230aa6e6.squirrel@webmail.eisler.com> <3D8ED82E-80F3-4B5B-8C71-088E344F47F2@netapp.com> <4DA48A76.5080305@gmail.com> <D9ECA635-BD66-4369-915F-747AE70B4EEE@netapp.com> <4DAD2D3F.6030107@gmail.com> <16CC3EFE-A0EC-48D1-B46C-47D25EAFDF59@netapp.com> <4DADBB52.3050703@gmail.com> <9987c84e8502b72afacc688c5198c0f8.squirrel@webmail.eisler.com> <0B17B345-A600-4BDD-AB61-30A627D735D6@netapp.com> <7C4DFCE962635144B8FAE8CA11D0BF1E0417416F75@MX14A.corp.emc.com>
To: "<david.black@emc.com>" <david.black@emc.com>
X-Mailer: Apple Mail (2.1084)
X-OriginalArrivalTime: 25 Apr 2011 20:55:34.0527 (UTC) FILETIME=[1F2CD0F0:01CC038B]
Cc: nfsv4@ietf.org
Subject: [nfsv4] What does NFS4ERR_NOTSUPP mean?
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.12
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: <http://www.ietf.org/mail-archive/web/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: Mon, 25 Apr 2011 22:23:14 -0000
On Apr 25, 2011, at 3:13 PM, <david.black@emc.com> <david.black@emc.com> wrote: > Returning to the pNFS question, pattern support almost certainly varies by layout type. Ahh, the question was different: If we allow both a pattern and a hole to be represented in the INITIALIZE and READ_PLUS operations, is it conceivable that someone implements holes, but not patterns? And that actually raises a far more interesting, and generic question, given the minor versioning rules of NFSv4.x, is it possible to return NFS4ERR_NOTSUPP for one variant of an operation, but not another? Look at rule 3 of the Minor Versioning Rules: 3. Minor versions must not modify the structure of an existing operation's arguments or results. Again, the complexity of handling multiple structure definitions for a single operation is too burdensome. New operations should be added instead of modifying existing structures for a minor version. This rule does not preclude the following adaptations in a minor version: * adding bits to flag fields, such as new attributes to GETATTR's bitmap4 data type, and providing corresponding variants of opaque arrays, such as a notify4 used together with such bitmaps * adding bits to existing attributes like ACLs that have flag words * extending enumerated types (including NFS4ERR_*) with new values * adding cases to a switched union So if we define FOO thusly in NFSv4.2 and make it optional: enum foo_enum { FOO_READ_NORMAL = 0 }; struct foo_reader { offset_t fr_start; }; union foo_content switch (foo_enum bar) { case FOO_READ_NORMAL: foo_reader fc_normal; default: void; }; struct FOO4args { foo_content fa_content; }; And if further, we redefine FOO in NFSv4.3 to include a new variant: const NFS4_TWO_GB = 0x80000000; typedef opaque twoGB_byte_array4[NFS4_INT32_MAX]; struct fourGB_buffer4 { twoGB_byte_array4[2]; } struct large_buffer4 { fourGB_buffer4 lb_big_buffers<>; opaque lb_small_buffer<>; } struct foo_large_reader { large_buffer4 rwar_data; }; enum foo_enum { FOO_READ_NORMAL = 0, FOO_READ_LARGE = 1 }; struct foo_reader { offset_t fr_start; }; union foo_content switch (foo_enum bar) { case FOO_READ_NORMAL: foo_reader fc_normal; case FOO_READ_LARGE: foo_large_reader fc_large; default: void; }; struct FOO4args { foo_content fa_content; }; I.e., I've come up with a way to add large file support to new READ and WRITE operations without having to form yet more operations. An implementation may decide to ship NFSv4.3 without large file support, but with normal file support for FOO. I would argue that if it got: PUTFH FOO {FOO_READ_LARGE} ... it could return NFS4ERR_NOTSUPP for FOO, but that only means it is not supported for the given value of the foo_enum. I.e., if given PUTFH FOO {FOO_READ_NORMAL}, then it would never return NFS4ERR_NOTSUPP. (Especially if we made FOO mandatory in NFSv4.3.)
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Mike Eisler
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Dean
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Trond Myklebust
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Trond Myklebust
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Trond Myklebust
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- [nfsv4] Large reads and writes Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Dean
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Dean
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Mike Eisler
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS Thomas Haynes
- Re: [nfsv4] Patterns: INITIALIZE or WRITE_PLUS david.black
- [nfsv4] What does NFS4ERR_NOTSUPP mean? Thomas Haynes