Subject: [nfsv4] Operations in NFSv4.1 (mandatory / optional)

From: Spencer Shepler <[email-masked]>
Date: Thu, 08 Nov 2007 02:44:51 -0600

In the next I-D, a table will be added to summarize
the operations in the context of being mandatory or optional.

I have attached those tables to solicit any feedback prior
to the next submission of the I-D.

Spencer

    Operations:

                                 Operations

    +----------------------+-----+---------------------- 
+---------------+
    | Operation            | No. | Feature /            | Defined  
in    |
    |                      |     | Disposition           
|               |
    +----------------------+-----+---------------------- 
+---------------+
    | ACCESS               | 3   | MAND                 | Section  
18.1  |
    | BACKCHANNEL_CTL      | 40  | MAND                 | Section  
18.33 |
    | BIND_CONN_TO_SESSION | 41  | MAND                 | Section  
18.34 |
    | CLOSE                | 4   | MAND                 | Section  
18.2  |
    | COMMIT               | 5   | MAND                 | Section  
18.3  |
    | CREATE               | 6   | MAND                 | Section  
18.4  |
    | CREATE_SESSION       | 43  | MAND                 | Section  
18.36 |
    | DELEGPURGE           | 7   | FDELG / MAND         | Section  
18.5  |
    | DELEGRETURN          | 8   | FDELG, DDELG, pNFS / | Section  
18.6  |
    |                      |     | MAND                  
|               |
    | DESTROY_CLIENTID     | 57  | MAND                 | Section  
18.50 |
    | DESTROY_SESSION      | 44  | MAND                 | Section  
18.37 |
    | EXCHANGE_ID          | 42  | MAND                 | Section  
18.35 |
    | FREE_STATEID         | 45  | MAND                 | Section  
18.38 |
    | GETATTR              | 9   | MAND                 | Section  
18.7  |
    | GETDEVICEINFO        | 47  | pNFS / MAND          | Section  
18.40 |
    | GETDEVICELIST        | 48  | pNFS / OPT           | Section  
18.41 |
    | GETFH                | 10  | MAND                 | Section  
18.8  |
    | GET_DIR_DELEGATION   | 46  | DDELG / MAND         | Section  
18.39 |
    | LAYOUTCOMMIT         | 49  | pNFS / MAND          | Section  
18.42 |
    | LAYOUTGET            | 50  | pNFS / MAND          | Section  
18.43 |
    | LAYOUTRETURN         | 51  | pNFS / MAND          | Section  
18.44 |
    | LINK                 | 11  | OPT                  | Section  
18.9  |
    | LOCK                 | 12  | MAND                 | Section  
18.10 |
    | LOCKT                | 13  | MAND                 | Section  
18.11 |
    | LOCKU                | 14  | MAND                 | Section  
18.12 |
    | LOOKUP               | 15  | MAND                 | Section  
18.13 |
    | LOOKUPP              | 16  | MAND                 | Section  
18.14 |
    | NVERIFY              | 17  | MAND                 | Section  
18.15 |
    | OPEN                 | 18  | MAND                 | Section  
18.16 |
    | OPENATTR             | 19  | MAND                 | Section  
18.17 |
    | OPEN_CONFIRM         | 20  | MNI                  | N/ 
A           |
    | OPEN_DOWNGRADE       | 21  | MAND                 | Section  
18.18 |
    | PUTFH                | 22  | MAND                 | Section  
18.19 |
    | PUTPUBFH             | 23  | MAND                 | Section  
18.20 |
    | PUTROOTFH            | 24  | MAND                 | Section  
18.21 |
    | READ                 | 25  | MAND                 | Section  
18.22 |
    | READDIR              | 26  | MAND                 | Section  
18.23 |
    | READLINK             | 27  | OPT                  | Section  
18.24 |
    | RECLAIM_COMPLETE     | 58  | MAND                 | Section  
18.51 |
    | RELEASE_LOCKOWNER    | 39  | MNI                  | N/ 
A           |
    | REMOVE               | 28  | MAND                 | Section  
18.25 |
    | RENAME               | 29  | MAND                 | Section  
18.26 |
    | RENEW                | 30  | MNI                  | N/ 
A           |
    | RESTOREFH            | 31  | MAND                 | Section  
18.27 |
    | SAVEFH               | 32  | MAND                 | Section  
18.28 |
    | SECINFO              | 33  | MAND                 | Section  
18.29 |
    | SECINFO_NO_NAME      | 52  | MAND                 | Section  
18.45 |
    | SEQUENCE             | 53  | MAND                 | Section  
18.46 |
    | SETATTR              | 34  | MAND                 | Section  
18.30 |
    | SET_CLIENTID         | 35  | MNI                  | N/ 
A           |
    | SET_CLIENTID_CONFIRM | 35  | MNI                  | N/ 
A           |
    | SET_SSV              | 54  | MAND                 | Section  
18.47 |
    | TEST_STATEID         | 55  | MAND                 | Section  
18.48 |
    | VERIFY               | 37  | MAND                 | Section  
18.31 |
    | WANT_DELEGATION      | 56  | OPT                  | Section  
18.49 |
    | WRITE                | 38  | MAND                 | Section  
18.32 |
    +----------------------+-----+---------------------- 
+---------------+

    Callback Operations:
                                 Operations

    +-------------------------+-----+------------------- 
+---------------+
    | Operation               | No. | Feature /         | Defined  
in    |
    |                         |     | Disposition        
|               |
    +-------------------------+-----+------------------- 
+---------------+
    | CB_GETATTR              | 3   | FDELG / MAND      | Section  
20.1  |
    | CB_LAYOUTRECALL         | 5   | pNFS / MAND       | Section  
20.3  |
    | CB_NOTIFY               | 6   | DDELG / MAND      | Section  
20.4  |
    | CB_NOTIFY_LOCK          | 13  | OPT               | Section  
20.11 |
    | CB_PUSH_DELEG           | 7   | MAND              | Section  
20.5  |
    | CB_RECALL               | 4   | FDELG, DDELG,     | Section  
20.2  |
    |                         |     | pNFS / MAND        
|               |
    | CB_RECALL_ANY           | 8   | FDELG, DDELG /    | Section  
20.6  |
    |                         |     | MAND               
|               |
    | CB_RECALL_SLOT          | 10  | MAND              | Section  
20.8  |
    | CB_RECALLABLE_OBJ_AVAIL | 9   | DDELG, pNFS /     | Section  
20.7  |
    |                         |     | MAND               
|               |
    | CB_SEQUENCE             | 11  | MAND              | Section  
20.9  |
    | CB_WANTS_CANCELLED      | 12  | DDELG / MAND      | Section  
20.10 |
    +-------------------------+-----+------------------- 
+---------------+

_______________________________________________
nfsv4 mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/nfsv4

---

From: "Noveck, Dave" <[email-masked]>
Date: Thu, 8 Nov 2007 06:43:57 -0500

Looks OK to me.  I assume that the text will explain that when something
is listed as both "MAND" and part of an optional feature (e.g. pNFS), it
is optional in the sense that NFS4ERR_NOTSUPP can and will be returned
if that optional feature is not implemented. 

-----Original Message-----
From: Spencer Shepler [mailto:[email-masked]] 
Sent: Thursday, November 08, 2007 3:45 AM
To: NFSv4
Subject: [nfsv4] Operations in NFSv4.1 (mandatory / optional)

In the next I-D, a table will be added to summarize the operations in
the context of being mandatory or optional.

I have attached those tables to solicit any feedback prior to the next
submission of the I-D.

Spencer

    Operations:

                                 Operations

    Callback Operations:
                                 Operations

---

From: "Talpey, Thomas" <[email-masked]>
Date: Thu, 08 Nov 2007 07:59:18 -0500

>to the next submission of the I-D.

I'm a little concerned about the wording with respect to client
implementations. If I write an NFSv4.1 ROM boot client (ok call
me crazy :-) ) surely it's not mandatory that I code in WRITE
support.

In other words, I think these are mandatory to the server,
for the most part, and some of the callback ops to the client.
Perhaps a second column is in order? It's kind of going there
now, with the "FDELG", "pNFS" etc qualifiers.

Or if this is too obvious, I'm fine with shutting up. Just putting
my best spec hat on.

Tom.

---

From: Benny Halevy <[email-masked]>
Date: Thu, 08 Nov 2007 16:56:28 +0200

The list looks good overall.  I'd just add CB_RECALL_ANY and
CB_WANTS_CANCELLED to pNFS / MAND
[btw, isn't CANCELLED supposed to be spelled with one 'l'?]

Benny

---

From: "Noveck, Dave" <[email-masked]>
Date: Thu, 8 Nov 2007 10:41:12 -0500

> [btw, isn't CANCELLED supposed to be spelled with one 'l'?]

In Britain and Canada.  US spelling is with two.

-----Original Message-----
From: Benny Halevy [mailto:[email-masked]] 
Sent: Thursday, November 08, 2007 9:56 AM
To: Spencer Shepler
Cc: NFSv4
Subject: Re: [nfsv4] Operations in NFSv4.1 (mandatory / optional)

Benny

---

From: Trond Myklebust <[email-masked]>
Date: Thu, 08 Nov 2007 12:17:05 -0500

> to the next submission of the I-D.

OPENATTR should not be marked as mandatory. It depends on the filesystem
support.

SECINFO_NO_NAME does not need to mandatory unless the server returns
NFS4ERR_WRONGSEC on LOOKUPP calls.

CB_PUSH_DELEG is conditional on the WANT_DELEGATION feature, it is not
mandatory.

Cheers
  Trond

---

From: Spencer Shepler <[email-masked]>
Date: Thu, 08 Nov 2007 14:43:55 -0600

> to the next submission of the I-D.

Thanks for the timely comments.  I have updated the tables and
added some introductory text to address the comments.  Let me know
if there are any other concerns or corrections.

I would like to note that all of the callback operations are optional.
This is derived from the text in section 2.10.3:

   "The backchannel used for callback requests from server to client,  
and
    carries CB_COMPOUND requests and responses.  Whether there is a
    backchannel or not is a decision by the client, however many  
features
    of NFSv4.1 require a backchannel.  NFSv4.1 servers MUST support
    backchannels."

Just wanted to point that out. :-)

Spencer

---------

17.  Operations: mandatory or optional

    The following tables summarize the operations of the NFSv4.1  
protocol
    and the corresponding designation of mandatory, optional or  
mandatory
    not to implement.  The designation of mandatory not to implement is
    reserved for those operations that were defined in NFSv4.0 and they
    MUST NOT be implemented in NFSv4.1.  These operations are limited to
    those replaced by the Sessions functionality of NFSv4.1.

    For the most part, the mandatory or optional designation is for the
    server implementation.  The client is generally required to  
implement
    the operations needed for the operating environment for which it
    servers.  For example, a read-only NFSv4.1 client would have no need
    to implement the WRITE operation and is not required to do so.

    Since this is a summary of the operations and their designation,
    there are subtleties that are not presented here.  Therefore, if
    there is a question of the requirements of implementation, the
    operation descriptions themselves must be consulted along with other
    relevant explanatory text within this specification.

    The abbrevations used in the second and third columns of the table
    are defined as follows.

    MAND  Mandatory to implement

    OPT  Optional to implement

    MNI  Mandatory NOT to implement

    For the NFSv4.1 features that are optional, the operations that
    support those features are optional and the server would return
    NFS4ERR_NOTSUPP in response to the client's use of those operations.
    If a optional feature is supported, it is possible that a set of
    operations related to the feature become mandatory to implement.   
The
    third column of the table disignates the feature(s) and if the
    operation is mandatory or optional in the presence of support for  
the
    feature.

    The optional features identified and their abbreviations are as
    follows:

    pNFS  Parallel NFS

    FDELG  File Delegations

    DDELG  Directory Delegations

                                 Operations

    +----------------------+------------+--------------- 
+---------------+
    | Operation            | MAND, OPT, | Feature (MAND |  
Definition    |
    |                      | or MNI     | or OPT)        
|               |
    +----------------------+------------+--------------- 
+---------------+
    | ACCESS               | MAND       |               | Section  
18.1  |
    | BACKCHANNEL_CTL      | MAND       |               | Section  
18.33 |
    | BIND_CONN_TO_SESSION | MAND       |               | Section  
18.34 |
    | CLOSE                | MAND       |               | Section  
18.2  |
    | COMMIT               | MAND       |               | Section  
18.3  |
    | CREATE               | MAND       |               | Section  
18.4  |
    | CREATE_SESSION       | MAND       |               | Section  
18.36 |
    | DELEGPURGE           | OPT        | FDELG (MAND)  | Section  
18.5  |
    | DELEGRETURN          | OPT        | FDELG, DDELG, | Section  
18.6  |
    |                      |            | pNFS (MAND)    
|               |
    | DESTROY_CLIENTID     | MAND       |               | Section  
18.50 |
    | DESTROY_SESSION      | MAND       |               | Section  
18.37 |
    | EXCHANGE_ID          | MAND       |               | Section  
18.35 |
    | FREE_STATEID         | MAND       |               | Section  
18.38 |
    | GETATTR              | MAND       |               | Section  
18.7  |
    | GETDEVICEINFO        | OPT        | pNFS (MAND)   | Section  
18.40 |
    | GETDEVICELIST        | OPT        | pNFS (OPT)    | Section  
18.41 |
    | GETFH                | MAND       |               | Section  
18.8  |
    | GET_DIR_DELEGATION   | OPT        | DDELG (MAND)  | Section  
18.39 |
    | LAYOUTCOMMIT         | OPT        | pNFS (MAND)   | Section  
18.42 |
    | LAYOUTGET            | OPT        | pNFS (MAND)   | Section  
18.43 |
    | LAYOUTRETURN         | OPT        | pNFS (MAND)   | Section  
18.44 |
    | LINK                 | OPT        |               | Section  
18.9  |
    | LOCK                 | MAND       |               | Section  
18.10 |
    | LOCKT                | MAND       |               | Section  
18.11 |
    | LOCKU                | MAND       |               | Section  
18.12 |
    | LOOKUP               | MAND       |               | Section  
18.13 |
    | LOOKUPP              | MAND       |               | Section  
18.14 |
    | NVERIFY              | MAND       |               | Section  
18.15 |
    | OPEN                 | MAND       |               | Section  
18.16 |
    | OPENATTR             | OPT        |               | Section  
18.17 |
    | OPEN_CONFIRM         | MNI        |               | N/ 
A           |
    | OPEN_DOWNGRADE       | MAND       |               | Section  
18.18 |
    | PUTFH                | MAND       |               | Section  
18.19 |
    | PUTPUBFH             | MAND       |               | Section  
18.20 |
    | PUTROOTFH            | MAND       |               | Section  
18.21 |
    | READ                 | MAND       |               | Section  
18.22 |
    | READDIR              | MAND       |               | Section  
18.23 |
    | READLINK             | OPT        |               | Section  
18.24 |
    | RECLAIM_COMPLETE     | MAND       |               | Section  
18.51 |
    | RELEASE_LOCKOWNER    | MNI        |               | N/ 
A           |
    | REMOVE               | MAND       |               | Section  
18.25 |
    | RENAME               | MAND       |               | Section  
18.26 |
    | RENEW                | MNI        |               | N/ 
A           |
    | RESTOREFH            | MAND       |               | Section  
18.27 |
    | SAVEFH               | MAND       |               | Section  
18.28 |
    | SECINFO              | MAND       |               | Section  
18.29 |
    | SECINFO_NO_NAME      | OPT (**)   |               | Section  
18.45 |
    | SEQUENCE             | MAND       |               | Section  
18.46 |
    | SETATTR              | MAND       |               | Section  
18.30 |
    | SET_CLIENTID         | MNI        |               | N/ 
A           |
    | SET_CLIENTID_CONFIRM | MNI        |               | N/ 
A           |
    | SET_SSV              | MAND       |               | Section  
18.47 |
    | TEST_STATEID         | MAND       |               | Section  
18.48 |
    | VERIFY               | MAND       |               | Section  
18.31 |
    | WANT_DELEGATION      | OPT        |               | Section  
18.49 |
    | WRITE                | MAND       |               | Section  
18.32 |
    +----------------------+------------+--------------- 
+---------------+

    Callback Operations:

                             Callback Operations

    +-------------------------+-----+------------------- 
+---------------+
    | Operation               | No. | Feature /         | Defined  
in    |
    |                         |     | Disposition        
|               |
    +-------------------------+-----+------------------- 
+---------------+
    | CB_GETATTR              | OPT | FDELG (MAND)      | Section  
20.1  |
    | CB_LAYOUTRECALL         | OPT | pNFS (MAND)       | Section  
20.3  |
    | CB_NOTIFY               | OPT | DDELG, pNFS       | Section  
20.4  |
    |                         |     | (MAND)             
|               |
    | CB_NOTIFY_LOCK          | OPT |                   | Section  
20.11 |
    | CB_PUSH_DELEG           | OPT | FDELG, DDELG      | Section  
20.5  |
    |                         |     | (OPT)              
|               |
    | CB_RECALL               | OPT | FDELG, DDELG,     | Section  
20.2  |
    |                         |     | pNFS (MAND)        
|               |
    | CB_RECALL_ANY           | OPT | FDELG, DDELG,     | Section  
20.6  |
    |                         |     | pNFS (MAND)        
|               |
    | CB_RECALL_SLOT          | OPT | FDELG, DDELG,     | Section  
20.8  |
    |                         |     | pNFS (MAND)        
|               |
    | CB_RECALLABLE_OBJ_AVAIL | OPT | DDELG, pNFS       | Section  
20.7  |
    |                         |     | (MAND)             
|               |
    | CB_SEQUENCE             | OPT | FDELG, DDELG,     | Section  
20.9  |
    |                         |     | pNFS (MAND)        
|               |
    | CB_WANTS_CANCELLED      | OPT | FDELG, DDELG,     | Section  
20.10 |
    |                         |     | pNFS (MAND)        
|               |
    +-------------------------+-----+------------------- 
+---------------+