draft-ietf-nfsv4-rfc5661sesqui-msns-04.v2v3.txt | draft-ietf-nfsv4-rfc5661sesqui-msns-04.txt | |||
---|---|---|---|---|
NFSv4 D. Noveck, Ed. | Internet Engineering Task Force (IETF) D. Noveck, Ed. | |||
Internet-Draft NetApp | Request for Comments: 0000 NetApp | |||
Obsoletes: 5661 (if approved) C. Lever | Obsoletes: 5661 C. Lever | |||
Intended status: Standards Track ORACLE | Category: Standards Track ORACLE | |||
Expires: 10 October 2020 8 April 2020 | ISSN: 2070-1721 April 2020 | |||
Network File System (NFS) Version 4 Minor Version 1 Protocol | Network File System (NFS) Version 4 Minor Version 1 Protocol | |||
draft-ietf-nfsv4-rfc5661sesqui-msns-04 | ||||
Abstract | Abstract | |||
This document describes the Network File System (NFS) version 4 minor | This document describes the Network File System (NFS) version 4 minor | |||
version 1, including features retained from the base protocol (NFS | version 1, including features retained from the base protocol (NFS | |||
version 4 minor version 0, which is specified in RFC 7530) and | version 4 minor version 0, which is specified in RFC 7530) and | |||
protocol extensions made subsequently. The later minor version has | protocol extensions made subsequently. The later minor version has | |||
no dependencies on NFS version 4 minor version 0, and is considered a | no dependencies on NFS version 4 minor version 0, and is considered a | |||
separate protocol. | separate protocol. | |||
This document obsoletes RFC5661. It substantially revises the | This document obsoletes RFC5661. It substantially revises the | |||
treatment of features relating to multi-server namespace, superseding | treatment of features relating to multi-server namespace, superseding | |||
the description of those features appearing in RFC5661. | the description of those features appearing in RFC5661. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 10 October 2020. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc0000. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | ||||
Please review these documents carefully, as they describe your rights | carefully, as they describe your rights and restrictions with respect | |||
and restrictions with respect to this document. Code Components | to this document. Code Components extracted from this document must | |||
extracted from this document must include Simplified BSD License text | include Simplified BSD License text as described in Section 4.e of | |||
as described in Section 4.e of the Trust Legal Provisions and are | the Trust Legal Provisions and are provided without warranty as | |||
provided without warranty as described in the Simplified BSD License. | described in the Simplified BSD License. | |||
This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 | 1. Introduction | |||
1.1. Introduction to this Update . . . . . . . . . . . . . . . 8 | 1.1. Introduction to this Update | |||
1.2. The NFS Version 4 Minor Version 1 Protocol . . . . . . . 10 | 1.2. The NFS Version 4 Minor Version 1 Protocol | |||
1.3. Requirements Language . . . . . . . . . . . . . . . . . . 10 | 1.3. Requirements Language | |||
1.4. Scope of This Document . . . . . . . . . . . . . . . . . 10 | 1.4. Scope of This Document | |||
1.5. NFSv4 Goals . . . . . . . . . . . . . . . . . . . . . . . 11 | 1.5. NFSv4 Goals | |||
1.6. NFSv4.1 Goals . . . . . . . . . . . . . . . . . . . . . . 11 | 1.6. NFSv4.1 Goals | |||
1.7. General Definitions . . . . . . . . . . . . . . . . . . . 12 | 1.7. General Definitions | |||
1.8. Overview of NFSv4.1 Features . . . . . . . . . . . . . . 14 | 1.8. Overview of NFSv4.1 Features | |||
1.9. Differences from NFSv4.0 . . . . . . . . . . . . . . . . 18 | 1.9. Differences from NFSv4.0 | |||
2. Core Infrastructure . . . . . . . . . . . . . . . . . . . . . 20 | 2. Core Infrastructure | |||
2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 20 | 2.1. Introduction | |||
2.2. RPC and XDR . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.2. RPC and XDR | |||
2.3. COMPOUND and CB_COMPOUND . . . . . . . . . . . . . . . . 23 | 2.3. COMPOUND and CB_COMPOUND | |||
2.4. Client Identifiers and Client Owners . . . . . . . . . . 24 | 2.4. Client Identifiers and Client Owners | |||
2.5. Server Owners . . . . . . . . . . . . . . . . . . . . . . 29 | 2.5. Server Owners | |||
2.6. Security Service Negotiation . . . . . . . . . . . . . . 30 | 2.6. Security Service Negotiation | |||
2.7. Minor Versioning . . . . . . . . . . . . . . . . . . . . 36 | 2.7. Minor Versioning | |||
2.8. Non-RPC-Based Security Services . . . . . . . . . . . . . 38 | 2.8. Non-RPC-Based Security Services | |||
2.9. Transport Layers . . . . . . . . . . . . . . . . . . . . 39 | 2.9. Transport Layers | |||
2.10. Session . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 2.10. Session | |||
3. Protocol Constants and Data Types . . . . . . . . . . . . . . 88 | 3. Protocol Constants and Data Types | |||
3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . . 88 | 3.1. Basic Constants | |||
3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 89 | 3.2. Basic Data Types | |||
3.3. Structured Data Types . . . . . . . . . . . . . . . . . . 92 | 3.3. Structured Data Types | |||
4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 101 | 4. Filehandles | |||
4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 101 | 4.1. Obtaining the First Filehandle | |||
4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 102 | 4.2. Filehandle Types | |||
4.3. One Method of Constructing a Volatile Filehandle . . . . 105 | 4.3. One Method of Constructing a Volatile Filehandle | |||
4.4. Client Recovery from Filehandle Expiration . . . . . . . 105 | 4.4. Client Recovery from Filehandle Expiration | |||
5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 106 | 5. File Attributes | |||
5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . . 108 | 5.1. REQUIRED Attributes | |||
5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 108 | 5.2. RECOMMENDED Attributes | |||
5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 108 | 5.3. Named Attributes | |||
5.4. Classification of Attributes . . . . . . . . . . . . . . 110 | 5.4. Classification of Attributes | |||
5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 111 | 5.5. Set-Only and Get-Only Attributes | |||
5.6. REQUIRED Attributes - List and Definition References . . 111 | 5.6. REQUIRED Attributes - List and Definition References | |||
5.7. RECOMMENDED Attributes - List and Definition | 5.7. RECOMMENDED Attributes - List and Definition References | |||
References . . . . . . . . . . . . . . . . . . . . . . . 112 | 5.8. Attribute Definitions | |||
5.8. Attribute Definitions . . . . . . . . . . . . . . . . . . 116 | 5.9. Interpreting owner and owner_group | |||
5.9. Interpreting owner and owner_group . . . . . . . . . . . 125 | 5.10. Character Case Attributes | |||
5.10. Character Case Attributes . . . . . . . . . . . . . . . . 127 | 5.11. Directory Notification Attributes | |||
5.11. Directory Notification Attributes . . . . . . . . . . . . 127 | 5.12. pNFS Attribute Definitions | |||
5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 127 | 5.13. Retention Attributes | |||
5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 129 | 6. Access Control Attributes | |||
6. Access Control Attributes . . . . . . . . . . . . . . . . . . 132 | 6.1. Goals | |||
6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . . 132 | 6.2. File Attributes Discussion | |||
6.2. File Attributes Discussion . . . . . . . . . . . . . . . 133 | 6.3. Common Methods | |||
6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 149 | 6.4. Requirements | |||
6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 152 | 7. Single-Server Namespace | |||
7. Single-Server Namespace . . . . . . . . . . . . . . . . . . . 158 | 7.1. Server Exports | |||
7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 158 | 7.2. Browsing Exports | |||
7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 158 | 7.3. Server Pseudo File System | |||
7.3. Server Pseudo File System . . . . . . . . . . . . . . . . 159 | 7.4. Multiple Roots | |||
7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 160 | 7.5. Filehandle Volatility | |||
7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . . 160 | 7.6. Exported Root | |||
7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . . 160 | 7.7. Mount Point Crossing | |||
7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 160 | 7.8. Security Policy and Namespace Presentation | |||
7.8. Security Policy and Namespace Presentation . . . . . . . 161 | 8. State Management | |||
8. State Management . . . . . . . . . . . . . . . . . . . . . . 162 | 8.1. Client and Session ID | |||
8.1. Client and Session ID . . . . . . . . . . . . . . . . . . 163 | 8.2. Stateid Definition | |||
8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 163 | 8.3. Lease Renewal | |||
8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . . 172 | 8.4. Crash Recovery | |||
8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 174 | 8.5. Server Revocation of Locks | |||
8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 186 | 8.6. Short and Long Leases | |||
8.6. Short and Long Leases . . . . . . . . . . . . . . . . . . 187 | 8.7. Clocks, Propagation Delay, and Calculating Lease Expiration | |||
8.7. Clocks, Propagation Delay, and Calculating Lease | 8.8. Obsolete Locking Infrastructure from NFSv4.0 | |||
Expiration . . . . . . . . . . . . . . . . . . . . . . . 187 | 9. File Locking and Share Reservations | |||
8.8. Obsolete Locking Infrastructure from NFSv4.0 . . . . . . 188 | 9.1. Opens and Byte-Range Locks | |||
9. File Locking and Share Reservations . . . . . . . . . . . . . 189 | 9.2. Lock Ranges | |||
9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 189 | 9.3. Upgrading and Downgrading Locks | |||
9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . . 193 | 9.4. Stateid Seqid Values and Byte-Range Locks | |||
9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . . 193 | 9.5. Issues with Multiple Open-Owners | |||
9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . . 194 | 9.6. Blocking Locks | |||
9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 194 | 9.7. Share Reservations | |||
9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 195 | 9.8. OPEN/CLOSE Operations | |||
9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 196 | 9.9. Open Upgrade and Downgrade | |||
9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . . 197 | 9.10. Parallel OPENs | |||
9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 197 | 9.11. Reclaim of Open and Byte-Range Locks | |||
9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 198 | 10. Client-Side Caching | |||
9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 199 | 10.1. Performance Challenges for Client-Side Caching | |||
10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 199 | 10.2. Delegation and Callbacks | |||
10.1. Performance Challenges for Client-Side Caching . . . . . 200 | 10.3. Data Caching | |||
10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 201 | 10.4. Open Delegation | |||
10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 205 | 10.5. Data Caching and Revocation | |||
10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 210 | 10.6. Attribute Caching | |||
10.5. Data Caching and Revocation . . . . . . . . . . . . . . 221 | 10.7. Data and Metadata Caching and Memory Mapped Files | |||
10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 223 | 10.8. Name and Directory Caching without Directory Delegations | |||
10.7. Data and Metadata Caching and Memory Mapped Files . . . 225 | 10.9. Directory Delegations | |||
10.8. Name and Directory Caching without Directory | 11. Multi-Server Namespace | |||
Delegations . . . . . . . . . . . . . . . . . . . . . . 227 | 11.1. Terminology | |||
10.9. Directory Delegations . . . . . . . . . . . . . . . . . 229 | 11.2. File System Location Attributes | |||
11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 233 | 11.3. File System Presence or Absence | |||
11.1. Terminology . . . . . . . . . . . . . . . . . . . . . . 233 | 11.4. Getting Attributes for an Absent File System | |||
11.2. File System Location Attributes . . . . . . . . . . . . 237 | 11.5. Uses of File System Location Information | |||
11.3. File System Presence or Absence . . . . . . . . . . . . 238 | 11.6. Trunking without File System Location Information | |||
11.4. Getting Attributes for an Absent File System . . . . . . 239 | 11.7. Users and Groups in a Multi-server Namespace | |||
11.5. Uses of File System Location Information . . . . . . . . 241 | 11.8. Additional Client-Side Considerations | |||
11.6. Trunking without File System Location Information . . . 251 | 11.9. Overview of File Access Transitions | |||
11.7. Users and Groups in a Multi-server Namespace . . . . . . 251 | 11.10. Effecting Network Endpoint Transitions | |||
11.8. Additional Client-Side Considerations . . . . . . . . . 253 | 11.11. Effecting File System Transitions | |||
11.9. Overview of File Access Transitions . . . . . . . . . . 253 | 11.12. Transferring State upon Migration | |||
11.10. Effecting Network Endpoint Transitions . . . . . . . . . 254 | 11.13. Client Responsibilities when Access is Transitioned | |||
11.11. Effecting File System Transitions . . . . . . . . . . . 255 | 11.14. Server Responsibilities Upon Migration | |||
11.12. Transferring State upon Migration . . . . . . . . . . . 265 | 11.15. Effecting File System Referrals | |||
11.13. Client Responsibilities when Access is Transitioned . . 266 | 11.16. The Attribute fs_locations | |||
11.14. Server Responsibilities Upon Migration . . . . . . . . . 276 | 11.17. The Attribute fs_locations_info | |||
11.15. Effecting File System Referrals . . . . . . . . . . . . 282 | 11.18. The Attribute fs_status | |||
11.16. The Attribute fs_locations . . . . . . . . . . . . . . . 289 | 12. Parallel NFS (pNFS) | |||
11.17. The Attribute fs_locations_info . . . . . . . . . . . . 292 | 12.1. Introduction | |||
11.18. The Attribute fs_status . . . . . . . . . . . . . . . . 306 | 12.2. pNFS Definitions | |||
12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 309 | 12.3. pNFS Operations | |||
12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 309 | 12.4. pNFS Attributes | |||
12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 311 | 12.5. Layout Semantics | |||
12.3. pNFS Operations . . . . . . . . . . . . . . . . . . . . 316 | 12.6. pNFS Mechanics | |||
12.4. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 317 | 12.7. Recovery | |||
12.5. Layout Semantics . . . . . . . . . . . . . . . . . . . . 317 | 12.8. Metadata and Storage Device Roles | |||
12.6. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 332 | 12.9. Security Considerations for pNFS | |||
12.7. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 334 | 13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout Type | |||
12.8. Metadata and Storage Device Roles . . . . . . . . . . . 339 | 13.1. Client ID and Session Considerations | |||
12.9. Security Considerations for pNFS . . . . . . . . . . . . 340 | 13.2. File Layout Definitions | |||
13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout | 13.3. File Layout Data Types | |||
Type . . . . . . . . . . . . . . . . . . . . . . . . . . 341 | 13.4. Interpreting the File Layout | |||
13.1. Client ID and Session Considerations . . . . . . . . . . 341 | 13.5. Data Server Multipathing | |||
13.2. File Layout Definitions . . . . . . . . . . . . . . . . 344 | 13.6. Operations Sent to NFSv4.1 Data Servers | |||
13.3. File Layout Data Types . . . . . . . . . . . . . . . . . 345 | 13.7. COMMIT through Metadata Server | |||
13.4. Interpreting the File Layout . . . . . . . . . . . . . . 349 | 13.8. The Layout Iomode | |||
13.5. Data Server Multipathing . . . . . . . . . . . . . . . . 357 | 13.9. Metadata and Data Server State Coordination | |||
13.6. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 358 | 13.10. Data Server Component File Size | |||
13.7. COMMIT through Metadata Server . . . . . . . . . . . . . 360 | 13.11. Layout Revocation and Fencing | |||
13.8. The Layout Iomode . . . . . . . . . . . . . . . . . . . 362 | 13.12. Security Considerations for the File Layout Type | |||
13.9. Metadata and Data Server State Coordination . . . . . . 362 | 14. Internationalization | |||
13.10. Data Server Component File Size . . . . . . . . . . . . 365 | 14.1. Stringprep Profile for the utf8str_cs Type | |||
13.11. Layout Revocation and Fencing . . . . . . . . . . . . . 366 | 14.2. Stringprep Profile for the utf8str_cis Type | |||
13.12. Security Considerations for the File Layout Type . . . . 367 | 14.3. Stringprep Profile for the utf8str_mixed Type | |||
14. Internationalization . . . . . . . . . . . . . . . . . . . . 368 | 14.4. UTF-8 Capabilities | |||
14.1. Stringprep Profile for the utf8str_cs Type . . . . . . . 369 | 14.5. UTF-8 Related Errors | |||
14.2. Stringprep Profile for the utf8str_cis Type . . . . . . 370 | 15. Error Values | |||
14.3. Stringprep Profile for the utf8str_mixed Type . . . . . 371 | 15.1. Error Definitions | |||
14.4. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 373 | 15.2. Operations and Their Valid Errors | |||
14.5. UTF-8 Related Errors . . . . . . . . . . . . . . . . . . 373 | 15.3. Callback Operations and Their Valid Errors | |||
15. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 374 | 15.4. Errors and the Operations That Use Them | |||
15.1. Error Definitions . . . . . . . . . . . . . . . . . . . 374 | 16. NFSv4.1 Procedures | |||
15.2. Operations and Their Valid Errors . . . . . . . . . . . 398 | 16.1. Procedure 0: NULL - No Operation | |||
15.3. Callback Operations and Their Valid Errors . . . . . . . 416 | 16.2. Procedure 1: COMPOUND - Compound Operations | |||
15.4. Errors and the Operations That Use Them . . . . . . . . 419 | 17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL | |||
16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 436 | 18. NFSv4.1 Operations | |||
16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 436 | 18.1. Operation 3: ACCESS - Check Access Rights | |||
16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 437 | 18.2. Operation 4: CLOSE - Close File | |||
17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 448 | 18.3. Operation 5: COMMIT - Commit Cached Data | |||
18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 454 | 18.4. Operation 6: CREATE - Create a Non-Regular File Object | |||
18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 454 | ||||
18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 459 | ||||
18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 460 | ||||
18.4. Operation 6: CREATE - Create a Non-Regular File | ||||
Object . . . . . . . . . . . . . . . . . . . . . . . . 463 | ||||
18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting | 18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting | |||
Recovery . . . . . . . . . . . . . . . . . . . . . . . 466 | Recovery | |||
18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 467 | 18.6. Operation 8: DELEGRETURN - Return Delegation | |||
18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 468 | 18.7. Operation 9: GETATTR - Get Attributes | |||
18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 470 | 18.8. Operation 10: GETFH - Get Current Filehandle | |||
18.9. Operation 11: LINK - Create Link to a File . . . . . . . 470 | 18.9. Operation 11: LINK - Create Link to a File | |||
18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 473 | 18.10. Operation 12: LOCK - Create Lock | |||
18.11. Operation 13: LOCKT - Test for Lock . . . . . . . . . . 478 | 18.11. Operation 13: LOCKT - Test for Lock | |||
18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 479 | 18.12. Operation 14: LOCKU - Unlock File | |||
18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 481 | 18.13. Operation 15: LOOKUP - Lookup Filename | |||
18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 482 | 18.14. Operation 16: LOOKUPP - Lookup Parent Directory | |||
18.15. Operation 17: NVERIFY - Verify Difference in | 18.15. Operation 17: NVERIFY - Verify Difference in Attributes | |||
Attributes . . . . . . . . . . . . . . . . . . . . . . 484 | 18.16. Operation 18: OPEN - Open a Regular File | |||
18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 485 | 18.17. Operation 19: OPENATTR - Open Named Attribute Directory | |||
18.17. Operation 19: OPENATTR - Open Named Attribute | 18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access | |||
Directory . . . . . . . . . . . . . . . . . . . . . . . 506 | 18.19. Operation 22: PUTFH - Set Current Filehandle | |||
18.20. Operation 23: PUTPUBFH - Set Public Filehandle | ||||
18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File | 18.21. Operation 24: PUTROOTFH - Set Root Filehandle | |||
Access . . . . . . . . . . . . . . . . . . . . . . . . 507 | 18.22. Operation 25: READ - Read from File | |||
18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 509 | 18.23. Operation 26: READDIR - Read Directory | |||
18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 510 | 18.24. Operation 27: READLINK - Read Symbolic Link | |||
18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 511 | 18.25. Operation 28: REMOVE - Remove File System Object | |||
18.22. Operation 25: READ - Read from File . . . . . . . . . . 512 | 18.26. Operation 29: RENAME - Rename Directory Entry | |||
18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 514 | 18.27. Operation 31: RESTOREFH - Restore Saved Filehandle | |||
18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 518 | 18.28. Operation 32: SAVEFH - Save Current Filehandle | |||
18.25. Operation 28: REMOVE - Remove File System Object . . . . 519 | 18.29. Operation 33: SECINFO - Obtain Available Security | |||
18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 522 | 18.30. Operation 34: SETATTR - Set Attributes | |||
18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 525 | 18.31. Operation 37: VERIFY - Verify Same Attributes | |||
18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 526 | 18.32. Operation 38: WRITE - Write to File | |||
18.29. Operation 33: SECINFO - Obtain Available Security . . . 527 | 18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control | |||
18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 531 | ||||
18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 534 | ||||
18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 535 | ||||
18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 540 | ||||
18.34. Operation 41: BIND_CONN_TO_SESSION - Associate Connection | 18.34. Operation 41: BIND_CONN_TO_SESSION - Associate Connection | |||
with Session . . . . . . . . . . . . . . . . . . . . . 541 | with Session | |||
18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 544 | 18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID | |||
18.36. Operation 43: CREATE_SESSION - Create New Session and | 18.36. Operation 43: CREATE_SESSION - Create New Session and | |||
Confirm Client ID . . . . . . . . . . . . . . . . . . . 562 | Confirm Client ID | |||
18.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 573 | 18.37. Operation 44: DESTROY_SESSION - Destroy a Session | |||
18.38. Operation 45: FREE_STATEID - Free Stateid with No | 18.38. Operation 45: FREE_STATEID - Free Stateid with No Locks | |||
Locks . . . . . . . . . . . . . . . . . . . . . . . . . 574 | ||||
18.39. Operation 46: GET_DIR_DELEGATION - Get a Directory | 18.39. Operation 46: GET_DIR_DELEGATION - Get a Directory | |||
Delegation . . . . . . . . . . . . . . . . . . . . . . 575 | Delegation | |||
18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 579 | 18.40. Operation 47: GETDEVICEINFO - Get Device Information | |||
18.41. Operation 48: GETDEVICELIST - Get All Device Mappings for | 18.41. Operation 48: GETDEVICELIST - Get All Device Mappings for | |||
a File System . . . . . . . . . . . . . . . . . . . . . 582 | a File System | |||
18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using a | 18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using a | |||
Layout . . . . . . . . . . . . . . . . . . . . . . . . 583 | Layout | |||
18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 587 | 18.43. Operation 50: LAYOUTGET - Get Layout Information | |||
18.44. Operation 51: LAYOUTRETURN - Release Layout | 18.44. Operation 51: LAYOUTRETURN - Release Layout Information | |||
Information . . . . . . . . . . . . . . . . . . . . . . 597 | ||||
18.45. Operation 52: SECINFO_NO_NAME - Get Security on Unnamed | 18.45. Operation 52: SECINFO_NO_NAME - Get Security on Unnamed | |||
Object . . . . . . . . . . . . . . . . . . . . . . . . 602 | Object | |||
18.46. Operation 53: SEQUENCE - Supply Per-Procedure Sequencing | 18.46. Operation 53: SEQUENCE - Supply Per-Procedure Sequencing | |||
and Control . . . . . . . . . . . . . . . . . . . . . . 603 | and Control | |||
18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 609 | 18.47. Operation 54: SET_SSV - Update SSV for a Client ID | |||
18.48. Operation 55: TEST_STATEID - Test Stateids for | 18.48. Operation 55: TEST_STATEID - Test Stateids for Validity | |||
Validity . . . . . . . . . . . . . . . . . . . . . . . 611 | 18.49. Operation 56: WANT_DELEGATION - Request Delegation | |||
18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 613 | 18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID | |||
18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 617 | ||||
18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims | 18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims | |||
Finished . . . . . . . . . . . . . . . . . . . . . . . 618 | Finished | |||
18.52. Operation 10044: ILLEGAL - Illegal Operation . . . . . . 621 | 18.52. Operation 10044: ILLEGAL - Illegal Operation | |||
19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 622 | 19. NFSv4.1 Callback Procedures | |||
19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 622 | 19.1. Procedure 0: CB_NULL - No Operation | |||
19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 622 | 19.2. Procedure 1: CB_COMPOUND - Compound Operations | |||
20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 627 | 20. NFSv4.1 Callback Operations | |||
20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 627 | 20.1. Operation 3: CB_GETATTR - Get Attributes | |||
20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 628 | 20.2. Operation 4: CB_RECALL - Recall a Delegation | |||
20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | 20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from Client | |||
Client . . . . . . . . . . . . . . . . . . . . . . . . 629 | ||||
20.4. Operation 6: CB_NOTIFY - Notify Client of Directory | 20.4. Operation 6: CB_NOTIFY - Notify Client of Directory | |||
Changes . . . . . . . . . . . . . . . . . . . . . . . . 633 | Changes | |||
20.5. Operation 7: CB_PUSH_DELEG - Offer Previously Requested | 20.5. Operation 7: CB_PUSH_DELEG - Offer Previously Requested | |||
Delegation to Client . . . . . . . . . . . . . . . . . 637 | Delegation to Client | |||
20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable | 20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable Objects | |||
Objects . . . . . . . . . . . . . . . . . . . . . . . . 638 | ||||
20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal Resources | 20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal Resources | |||
for Recallable Objects . . . . . . . . . . . . . . . . 641 | for Recallable Objects | |||
20.8. Operation 10: CB_RECALL_SLOT - Change Flow Control | 20.8. Operation 10: CB_RECALL_SLOT - Change Flow Control Limits | |||
Limits . . . . . . . . . . . . . . . . . . . . . . . . 642 | ||||
20.9. Operation 11: CB_SEQUENCE - Supply Backchannel Sequencing | 20.9. Operation 11: CB_SEQUENCE - Supply Backchannel Sequencing | |||
and Control . . . . . . . . . . . . . . . . . . . . . . 643 | and Control | |||
20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | 20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | |||
Delegation Wants . . . . . . . . . . . . . . . . . . . 645 | Delegation Wants | |||
20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of Possible | 20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of Possible | |||
Lock Availability . . . . . . . . . . . . . . . . . . . 646 | Lock Availability | |||
20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of Device | 20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of Device | |||
ID Changes . . . . . . . . . . . . . . . . . . . . . . 648 | ID Changes | |||
20.13. Operation 10044: CB_ILLEGAL - Illegal Callback | 20.13. Operation 10044: CB_ILLEGAL - Illegal Callback Operation | |||
Operation . . . . . . . . . . . . . . . . . . . . . . . 650 | 21. Security Considerations | |||
21. Security Considerations . . . . . . . . . . . . . . . . . . . 650 | 22. IANA Considerations | |||
22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 654 | 22.1. IANA Actions Needed | |||
22.1. IANA Actions Needed . . . . . . . . . . . . . . . . . . 655 | 22.2. Named Attribute Definitions | |||
22.2. Named Attribute Definitions . . . . . . . . . . . . . . 655 | 22.3. Device ID Notifications | |||
22.3. Device ID Notifications . . . . . . . . . . . . . . . . 656 | 22.4. Object Recall Types | |||
22.4. Object Recall Types . . . . . . . . . . . . . . . . . . 658 | 22.5. Layout Types | |||
22.5. Layout Types . . . . . . . . . . . . . . . . . . . . . . 660 | 22.6. Path Variable Definitions | |||
22.6. Path Variable Definitions . . . . . . . . . . . . . . . 662 | 23. References | |||
23. References . . . . . . . . . . . . . . . . . . . . . . . . . 665 | 23.1. Normative References | |||
23.1. Normative References . . . . . . . . . . . . . . . . . . 666 | 23.2. Informative References | |||
23.2. Informative References . . . . . . . . . . . . . . . . . 669 | Appendix A. Need for this Update | |||
Appendix A. Need for this Update . . . . . . . . . . . . . . . . 673 | Appendix B. Changes in this Update | |||
Appendix B. Changes in this Update . . . . . . . . . . . . . . . 675 | B.1. Revisions Made to Section 11 of RFC5661 | |||
B.1. Revisions Made to Section 11 of RFC5661 . . . . . . . . . 675 | B.2. Revisions Made to Operations in RFC5661 | |||
B.2. Revisions Made to Operations in RFC5661 . . . . . . . . . 678 | B.3. Revisions Made to Error Definitions in RFC5661 | |||
B.3. Revisions Made to Error Definitions in RFC5661 . . . . . 680 | B.4. Other Revisions Made to RFC5661 | |||
B.4. Other Revisions Made to RFC5661 . . . . . . . . . . . . . 681 | Appendix C. Security Issues that Need to be Addressed | |||
Appendix C. Security Issues that Need to be Addressed . . . . . 682 | Acknowledgments | |||
Appendix D. Acknowledgments . . . . . . . . . . . . . . . . . . 684 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 686 | ||||
1. Introduction | 1. Introduction | |||
1.1. Introduction to this Update | 1.1. Introduction to this Update | |||
Two important features previously defined in minor version 0 but | Two important features previously defined in minor version 0 but | |||
never fully addressed in minor version 1 are trunking, the | never fully addressed in minor version 1 are trunking, the | |||
simultaneous use of multiple connections between a client and server, | simultaneous use of multiple connections between a client and server, | |||
potentially to different network addresses, and transparent state | potentially to different network addresses, and transparent state | |||
migration, which allows a file system to be transferred between | migration, which allows a file system to be transferred between | |||
servers in a way that provides to the client the ability to maintain | servers in a way that provides to the client the ability to maintain | |||
its existing locking state across the transfer. | its existing locking state across the transfer. | |||
The revised description of the NFS version 4 minor version 1 | The revised description of the NFS version 4 minor version 1 | |||
(NFSv4.1) protocol presented in this update is necessary to enable | (NFSv4.1) protocol presented in this update is necessary to enable | |||
full use of these features together with other multi-server namespace | full use of these features together with other multi-server namespace | |||
features. This document is in the form of an updated description of | features. This document is in the form of an updated description of | |||
the NFSv4.1 protocol previously defined in RFC5661 [65]. RFC5661 is | the NFSv4.1 protocol previously defined in RFC 5661 [65]. RFC5661 is | |||
obsoleted by this document. However, the update has a limited scope | obsoleted by this document. However, the update has a limited scope | |||
and is focused on enabling full use of trunking and transparent state | and is focused on enabling full use of trunking and transparent state | |||
migration. The need for these changes is discussed in Appendix A. | migration. The need for these changes is discussed in Appendix A. | |||
Appendix B describes the specific changes made to arrive at the | Appendix B describes the specific changes made to arrive at the | |||
current text. | current text. | |||
This limited-scope update replaces the current NFSv4.1 RFC with the | This limited-scope update replaces the current NFSv4.1 RFC with the | |||
intention of providing an authoritative and complete specification, | intention of providing an authoritative and complete specification, | |||
the motivation for which is discussed in [35], addressing the issues | the motivation for which is discussed in [35], addressing the issues | |||
within the scope of the update. However, it will not address issues | within the scope of the update. However, it will not address issues | |||
that are known but outside of this limited scope as could expected by | that are known but outside of this limited scope as could expected by | |||
a full update of the protocol. Below are some areas which are known | a full update of the protocol. Below are some areas which are known | |||
to need addressing in a future update of the protocol. | to need addressing in a future update of the protocol. | |||
* Work needs to be done with regard to RFC8178 [66] which | * Work needs to be done with regard to RFC 8178 [66] which | |||
establishes NFSv4-wide versioning rules. As RFC5661 is currently | establishes NFSv4-wide versioning rules. As RFC5661 is currently | |||
inconsistent with that document, changes are needed in order to | inconsistent with that document, changes are needed in order to | |||
arrive at a situation in which there would be no need for RFC8178 | arrive at a situation in which there would be no need for RFC8178 | |||
to update the NFSv4.1 specification. | to update the NFSv4.1 specification. | |||
* Work needs to be done with regard to RFC8434 [69], which | * Work needs to be done with regard to RFC 8434 [69], which | |||
establishes the requirements for pNFS layout types, which are not | establishes the requirements for pNFS layout types, which are not | |||
clearly defined in RFC5661. When that work is done and the | clearly defined in RFC5661. When that work is done and the | |||
resulting documents approved, the new NFSv4.1 specification | resulting documents approved, the new NFSv4.1 specification | |||
document will provide a clear set of requirements for layout types | document will provide a clear set of requirements for layout types | |||
and a description of the file layout type that conforms to those | and a description of the file layout type that conforms to those | |||
requirements. Other layout types will have their own | requirements. Other layout types will have their own | |||
specification documents that conforms to those requirements as | specification documents that conforms to those requirements as | |||
well. | well. | |||
* Work needs to be done to address many errata reports relevant to | * Work needs to be done to address many errata reports relevant to | |||
skipping to change at page 10, line 11 ¶ | skipping to change at line 419 ¶ | |||
within the specification. The updates applied by RFC8434 [69] and | within the specification. The updates applied by RFC8434 [69] and | |||
RFC8178 [66] to RFC5661 also apply to this specification, and will | RFC8178 [66] to RFC5661 also apply to this specification, and will | |||
apply to any subsequent v4.1 specification until that work is done. | apply to any subsequent v4.1 specification until that work is done. | |||
1.2. The NFS Version 4 Minor Version 1 Protocol | 1.2. The NFS Version 4 Minor Version 1 Protocol | |||
The NFS version 4 minor version 1 (NFSv4.1) protocol is the second | The NFS version 4 minor version 1 (NFSv4.1) protocol is the second | |||
minor version of the NFS version 4 (NFSv4) protocol. The first minor | minor version of the NFS version 4 (NFSv4) protocol. The first minor | |||
version, NFSv4.0, is now described in RFC 7530 [67]. It generally | version, NFSv4.0, is now described in RFC 7530 [67]. It generally | |||
follows the guidelines for minor versioning that are listed in | follows the guidelines for minor versioning that are listed in | |||
Section 10 of RFC 3530. However, it diverges from guidelines 11 ("a | Section 10 of [36]. However, it diverges from guidelines 11 ("a | |||
client and server that support minor version X must support minor | client and server that support minor version X must support minor | |||
versions 0 through X-1") and 12 ("no new features may be introduced | versions 0 through X-1") and 12 ("no new features may be introduced | |||
as mandatory in a minor version"). These divergences are due to the | as mandatory in a minor version"). These divergences are due to the | |||
introduction of the sessions model for managing non-idempotent | introduction of the sessions model for managing non-idempotent | |||
operations and the RECLAIM_COMPLETE operation. These two new | operations and the RECLAIM_COMPLETE operation. These two new | |||
features are infrastructural in nature and simplify implementation of | features are infrastructural in nature and simplify implementation of | |||
existing and other new features. Making them anything but REQUIRED | existing and other new features. Making them anything but REQUIRED | |||
would add undue complexity to protocol definition and implementation. | would add undue complexity to protocol definition and implementation. | |||
NFSv4.1 accordingly updates the minor versioning guidelines | NFSv4.1 accordingly updates the minor versioning guidelines | |||
(Section 2.7). | (Section 2.7). | |||
skipping to change at page 20, line 35 ¶ | skipping to change at line 908 ¶ | |||
forms of RPC authentication, AUTH_SYS, had no strong authentication | forms of RPC authentication, AUTH_SYS, had no strong authentication | |||
and required a host-based authentication approach. NFSv4.1 also | and required a host-based authentication approach. NFSv4.1 also | |||
depends on RPC for basic security services and mandates RPC support | depends on RPC for basic security services and mandates RPC support | |||
for a user-based authentication model. The user-based authentication | for a user-based authentication model. The user-based authentication | |||
model has user principals authenticated by a server, and in turn the | model has user principals authenticated by a server, and in turn the | |||
server authenticated by user principals. RPC provides some basic | server authenticated by user principals. RPC provides some basic | |||
security services that are used by NFSv4.1. | security services that are used by NFSv4.1. | |||
2.2.1.1. RPC Security Flavors | 2.2.1.1. RPC Security Flavors | |||
As described in Section 7.2 ("Authentication") of [3], RPC security | As described in "Authentication", Section 7.2 of [3], RPC security is | |||
is encapsulated in the RPC header, via a security or authentication | encapsulated in the RPC header, via a security or authentication | |||
flavor, and information specific to the specified security flavor. | flavor, and information specific to the specified security flavor. | |||
Every RPC header conveys information used to identify and | Every RPC header conveys information used to identify and | |||
authenticate a client and server. As discussed in Section 2.2.1.1.1, | authenticate a client and server. As discussed in Section 2.2.1.1.1, | |||
some security flavors provide additional security services. | some security flavors provide additional security services. | |||
NFSv4.1 clients and servers MUST implement RPCSEC_GSS. (This | NFSv4.1 clients and servers MUST implement RPCSEC_GSS. (This | |||
requirement to implement is not a requirement to use.) Other | requirement to implement is not a requirement to use.) Other | |||
flavors, such as AUTH_NONE and AUTH_SYS, MAY be implemented as well. | flavors, such as AUTH_NONE and AUTH_SYS, MAY be implemented as well. | |||
2.2.1.1.1. RPCSEC_GSS and Security Services | 2.2.1.1.1. RPCSEC_GSS and Security Services | |||
skipping to change at page 42, line 22 ¶ | skipping to change at line 1922 ¶ | |||
shortfalls with practical solutions: | shortfalls with practical solutions: | |||
* EOS is enabled by a reply cache with a bounded size, making it | * EOS is enabled by a reply cache with a bounded size, making it | |||
feasible to keep the cache in persistent storage and enable EOS | feasible to keep the cache in persistent storage and enable EOS | |||
through server failure and recovery. One reason that previous | through server failure and recovery. One reason that previous | |||
revisions of NFS did not support EOS was because some EOS | revisions of NFS did not support EOS was because some EOS | |||
approaches often limited parallelism. As will be explained in | approaches often limited parallelism. As will be explained in | |||
Section 2.10.6, NFSv4.1 supports both EOS and unlimited | Section 2.10.6, NFSv4.1 supports both EOS and unlimited | |||
parallelism. | parallelism. | |||
* The NFSv4.1 client (defined in Section 1.7, Section 1.7) creates | * The NFSv4.1 client (defined in Section 1.7) creates transport | |||
transport connections and provides them to the server to use for | connections and provides them to the server to use for sending | |||
sending callback requests, thus solving the firewall issue | callback requests, thus solving the firewall issue | |||
(Section 18.34). Races between responses from client requests and | (Section 18.34). Races between responses from client requests and | |||
callbacks caused by the requests are detected via the session's | callbacks caused by the requests are detected via the session's | |||
sequencing properties that are a consequence of EOS | sequencing properties that are a consequence of EOS | |||
(Section 2.10.6.3). | (Section 2.10.6.3). | |||
* The NFSv4.1 client can associate an arbitrary number of | * The NFSv4.1 client can associate an arbitrary number of | |||
connections with the session, and thus provide trunking | connections with the session, and thus provide trunking | |||
(Section 2.10.5). | (Section 2.10.5). | |||
* The NFSv4.1 client and server produce a session key independent of | * The NFSv4.1 client and server produce a session key independent of | |||
skipping to change at page 53, line 37 ¶ | skipping to change at line 2459 ¶ | |||
cannot be interpreted by the replier except to test for equality with | cannot be interpreted by the replier except to test for equality with | |||
previously sent requests. When consulting an RPC-based duplicate | previously sent requests. When consulting an RPC-based duplicate | |||
request cache, the opaqueness of the XID requires a computationally | request cache, the opaqueness of the XID requires a computationally | |||
expensive look up (often via a hash that includes XID and source | expensive look up (often via a hash that includes XID and source | |||
address). NFSv4.1 requests use a non-opaque slot ID, which is an | address). NFSv4.1 requests use a non-opaque slot ID, which is an | |||
index into a slot table, which is far more efficient. Second, | index into a slot table, which is far more efficient. Second, | |||
because RPC requests can be executed by the replier in any order, | because RPC requests can be executed by the replier in any order, | |||
there is no bound on the number of requests that may be outstanding | there is no bound on the number of requests that may be outstanding | |||
at any time. To achieve perfect EOS, using ONC RPC would require | at any time. To achieve perfect EOS, using ONC RPC would require | |||
storing all replies in the reply cache. XIDs are 32 bits; storing | storing all replies in the reply cache. XIDs are 32 bits; storing | |||
over four billion (2^32) replies in the reply cache is not practical. | over four billion (2^(32)) replies in the reply cache is not | |||
In practice, previous versions of NFS have chosen to store a fixed | practical. In practice, previous versions of NFS have chosen to | |||
number of replies in the cache, and to use a least recently used | store a fixed number of replies in the cache, and to use a least | |||
(LRU) approach to replacing cache entries with new entries when the | recently used (LRU) approach to replacing cache entries with new | |||
cache is full. In NFSv4.1, the number of outstanding requests is | entries when the cache is full. In NFSv4.1, the number of | |||
bounded by the size of the slot table, and a sequence ID per slot is | outstanding requests is bounded by the size of the slot table, and a | |||
used to tell the replier when it is safe to delete a cached reply. | sequence ID per slot is used to tell the replier when it is safe to | |||
delete a cached reply. | ||||
In the NFSv4.1 reply cache, when the requester sends a new request, | In the NFSv4.1 reply cache, when the requester sends a new request, | |||
it selects a slot ID in the range 0..N, where N is the replier's | it selects a slot ID in the range 0..N, where N is the replier's | |||
current maximum slot ID granted to the requester on the session over | current maximum slot ID granted to the requester on the session over | |||
which the request is to be sent. The value of N starts out as equal | which the request is to be sent. The value of N starts out as equal | |||
to ca_maxrequests - 1 (Section 18.36), but can be adjusted by the | to ca_maxrequests - 1 (Section 18.36), but can be adjusted by the | |||
response to SEQUENCE or CB_SEQUENCE as described later in this | response to SEQUENCE or CB_SEQUENCE as described later in this | |||
section. The slot ID must be unused by any of the requests that the | section. The slot ID must be unused by any of the requests that the | |||
requester has already active on the session. "Unused" here means the | requester has already active on the session. "Unused" here means the | |||
requester has no outstanding request for that slot ID. | requester has no outstanding request for that slot ID. | |||
A slot contains a sequence ID and the cached reply corresponding to | A slot contains a sequence ID and the cached reply corresponding to | |||
the request sent with that sequence ID. The sequence ID is a 32-bit | the request sent with that sequence ID. The sequence ID is a 32-bit | |||
unsigned value, and is therefore in the range 0..0xFFFFFFFF (2^32 - | unsigned value, and is therefore in the range 0..0xFFFFFFFF (2^(32) - | |||
1). The first time a slot is used, the requester MUST specify a | 1). The first time a slot is used, the requester MUST specify a | |||
sequence ID of one (Section 18.36). Each time a slot is reused, the | sequence ID of one (Section 18.36). Each time a slot is reused, the | |||
request MUST specify a sequence ID that is one greater than that of | request MUST specify a sequence ID that is one greater than that of | |||
the previous request on the slot. If the previous sequence ID was | the previous request on the slot. If the previous sequence ID was | |||
0xFFFFFFFF, then the next request for the slot MUST have the sequence | 0xFFFFFFFF, then the next request for the slot MUST have the sequence | |||
ID set to zero (i.e., (2^32 - 1) + 1 mod 2^32). | ID set to zero (i.e., (2^(32) - 1) + 1 mod 2^(32)). | |||
The sequence ID accompanies the slot ID in each request. It is for | The sequence ID accompanies the slot ID in each request. It is for | |||
the critical check at the replier: it used to efficiently determine | the critical check at the replier: it used to efficiently determine | |||
whether a request using a certain slot ID is a retransmit or a new, | whether a request using a certain slot ID is a retransmit or a new, | |||
never-before-seen request. It is not feasible for the requester to | never-before-seen request. It is not feasible for the requester to | |||
assert that it is retransmitting to implement this, because for any | assert that it is retransmitting to implement this, because for any | |||
given request the requester cannot know whether the replier has seen | given request the requester cannot know whether the replier has seen | |||
it unless the replier actually replies. Of course, if the requester | it unless the replier actually replies. Of course, if the requester | |||
has seen the reply, the requester would not retransmit. | has seen the reply, the requester would not retransmit. | |||
skipping to change at page 69, line 24 ¶ | skipping to change at line 3202 ¶ | |||
posted receive if unused by the actual received request, or may pass | posted receive if unused by the actual received request, or may pass | |||
the now-complete buffers by reference for normal write processing. | the now-complete buffers by reference for normal write processing. | |||
For a server that can make use of it, this removes any need for data | For a server that can make use of it, this removes any need for data | |||
copies of incoming data, without resorting to complicated end-to-end | copies of incoming data, without resorting to complicated end-to-end | |||
buffer advertisement and management. This includes most kernel-based | buffer advertisement and management. This includes most kernel-based | |||
and integrated server designs, among many others. The client may | and integrated server designs, among many others. The client may | |||
perform similar optimizations, if desired. | perform similar optimizations, if desired. | |||
2.10.7.4. Dual RDMA and Non-RDMA Transports | 2.10.7.4. Dual RDMA and Non-RDMA Transports | |||
Some RDMA transports (e.g., RFC 5040 [8]) permit a "streaming" (non- | Some RDMA transports (e.g., [8]) permit a "streaming" (non-RDMA) | |||
RDMA) phase, where ordinary traffic might flow before "stepping up" | phase, where ordinary traffic might flow before "stepping up" to RDMA | |||
to RDMA mode, commencing RDMA traffic. Some RDMA transports start | mode, commencing RDMA traffic. Some RDMA transports start | |||
connections always in RDMA mode. NFSv4.1 allows, but does not | connections always in RDMA mode. NFSv4.1 allows, but does not | |||
assume, a streaming phase before RDMA mode. When a connection is | assume, a streaming phase before RDMA mode. When a connection is | |||
associated with a session, the client and server negotiate whether | associated with a session, the client and server negotiate whether | |||
the connection is used in RDMA or non-RDMA mode (see Sections 18.36 | the connection is used in RDMA or non-RDMA mode (see Sections 18.36 | |||
and 18.34). | and 18.34). | |||
2.10.8. Session Security | 2.10.8. Session Security | |||
2.10.8.1. Session Callback Security | 2.10.8.1. Session Callback Security | |||
skipping to change at page 79, line 13 ¶ | skipping to change at line 3658 ¶ | |||
time, and the EXCHANGE_ID operation can be used to create more SSV | time, and the EXCHANGE_ID operation can be used to create more SSV | |||
RPCSEC_GSS handles. Expiration of SSV RPCSEC_GSS handles does not | RPCSEC_GSS handles. Expiration of SSV RPCSEC_GSS handles does not | |||
imply that the SSV or its GSS context has expired. | imply that the SSV or its GSS context has expired. | |||
The client MUST establish an SSV via SET_SSV before the SSV GSS | The client MUST establish an SSV via SET_SSV before the SSV GSS | |||
context can be used to emit tokens from GSS_Wrap() and GSS_GetMIC(). | context can be used to emit tokens from GSS_Wrap() and GSS_GetMIC(). | |||
If SET_SSV has not been successfully called, attempts to emit tokens | If SET_SSV has not been successfully called, attempts to emit tokens | |||
MUST fail. | MUST fail. | |||
The SSV mechanism does not support replay detection and sequencing in | The SSV mechanism does not support replay detection and sequencing in | |||
its tokens because RPCSEC_GSS does not use those features (See | its tokens because RPCSEC_GSS does not use those features (see | |||
Section 5.2.2, "Context Creation Requests", in [4]). However, | "Context Creation Requests", Section 5.2.2 of [4]). However, | |||
Section 2.10.10 discusses special considerations for the SSV | Section 2.10.10 discusses special considerations for the SSV | |||
mechanism when used with RPCSEC_GSS. | mechanism when used with RPCSEC_GSS. | |||
2.10.10. Security Considerations for RPCSEC_GSS When Using the SSV | 2.10.10. Security Considerations for RPCSEC_GSS When Using the SSV | |||
Mechanism | Mechanism | |||
When a client ID is created with SP4_SSV state protection (see | When a client ID is created with SP4_SSV state protection (see | |||
Section 18.35), the client is permitted to associate multiple | Section 18.35), the client is permitted to associate multiple | |||
RPCSEC_GSS handles with the single SSV GSS context (see | RPCSEC_GSS handles with the single SSV GSS context (see | |||
Section 2.10.9). Because of the way RPCSEC_GSS (both version 1 and | Section 2.10.9). Because of the way RPCSEC_GSS (both version 1 and | |||
skipping to change at page 88, line 8 ¶ | skipping to change at line 4077 ¶ | |||
EXCHGID4_FLAG_USE_PNFS_MDS, and EXCHGID4_FLAG_USE_PNFS_DS flags (not | EXCHGID4_FLAG_USE_PNFS_MDS, and EXCHGID4_FLAG_USE_PNFS_DS flags (not | |||
mutually exclusive) are passed in the EXCHANGE_ID arguments and | mutually exclusive) are passed in the EXCHANGE_ID arguments and | |||
results to allow the client to indicate how it wants to use sessions | results to allow the client to indicate how it wants to use sessions | |||
created under the client ID, and to allow the server to indicate how | created under the client ID, and to allow the server to indicate how | |||
it will allow the sessions to be used. See Section 13.1 for pNFS | it will allow the sessions to be used. See Section 13.1 for pNFS | |||
sessions considerations. | sessions considerations. | |||
3. Protocol Constants and Data Types | 3. Protocol Constants and Data Types | |||
The syntax and semantics to describe the data types of the NFSv4.1 | The syntax and semantics to describe the data types of the NFSv4.1 | |||
protocol are defined in the XDR RFC 4506 [2] and RPC RFC 5531 [3] | protocol are defined in the XDR (RFC 4506 [2]) and RPC (RFC 5531 [3]) | |||
documents. The next sections build upon the XDR data types to define | documents. The next sections build upon the XDR data types to define | |||
constants, types, and structures specific to this protocol. The full | constants, types, and structures specific to this protocol. The full | |||
list of XDR data types is in [10]. | list of XDR data types is in [10]. | |||
3.1. Basic Constants | 3.1. Basic Constants | |||
const NFS4_FHSIZE = 128; | const NFS4_FHSIZE = 128; | |||
const NFS4_VERIFIER_SIZE = 8; | const NFS4_VERIFIER_SIZE = 8; | |||
const NFS4_OPAQUE_LIMIT = 1024; | const NFS4_OPAQUE_LIMIT = 1024; | |||
const NFS4_SESSIONID_SIZE = 16; | const NFS4_SESSIONID_SIZE = 16; | |||
skipping to change at page 94, line 35 ¶ | skipping to change at line 4388 ¶ | |||
struct netaddr4 { | struct netaddr4 { | |||
/* see struct rpcb in RFC 1833 */ | /* see struct rpcb in RFC 1833 */ | |||
string na_r_netid<>; /* network id */ | string na_r_netid<>; /* network id */ | |||
string na_r_addr<>; /* universal address */ | string na_r_addr<>; /* universal address */ | |||
}; | }; | |||
The netaddr4 data type is used to identify network transport | The netaddr4 data type is used to identify network transport | |||
endpoints. The na_r_netid and na_r_addr fields respectively contain | endpoints. The na_r_netid and na_r_addr fields respectively contain | |||
a netid and uaddr. The netid and uaddr concepts are defined in [12]. | a netid and uaddr. The netid and uaddr concepts are defined in [12]. | |||
The netid and uaddr formats for TCP over IPv4 and TCP over IPv6 are | The netid and uaddr formats for TCP over IPv4 and TCP over IPv6 are | |||
defined in [12], specifically Tables 2 and 3 and Sections 5.2.3.3 and | defined in Table 2 and Table 3 and in Sections 5.2.3.3 and 5.2.3.4. | |||
5.2.3.4. | ||||
3.3.10. state_owner4 | 3.3.10. state_owner4 | |||
struct state_owner4 { | struct state_owner4 { | |||
clientid4 clientid; | clientid4 clientid; | |||
opaque owner<NFS4_OPAQUE_LIMIT>; | opaque owner<NFS4_OPAQUE_LIMIT>; | |||
}; | }; | |||
typedef state_owner4 open_owner4; | typedef state_owner4 open_owner4; | |||
typedef state_owner4 lock_owner4; | typedef state_owner4 lock_owner4; | |||
skipping to change at page 105, line 14 ¶ | skipping to change at line 4864 ¶ | |||
Volatile filehandles are especially suitable for implementation of | Volatile filehandles are especially suitable for implementation of | |||
the pseudo file systems used to bridge exports. See Section 7.5 for | the pseudo file systems used to bridge exports. See Section 7.5 for | |||
a discussion of this. | a discussion of this. | |||
4.3. One Method of Constructing a Volatile Filehandle | 4.3. One Method of Constructing a Volatile Filehandle | |||
A volatile filehandle, while opaque to the client, could contain: | A volatile filehandle, while opaque to the client, could contain: | |||
[volatile bit = 1 | server boot time | slot | generation number] | [volatile bit = 1 | server boot time | slot | generation number] | |||
o slot is an index in the server volatile filehandle table | ||||
o generation number is the generation number for the table entry/ | * slot is an index in the server volatile filehandle table | |||
* generation number is the generation number for the table entry/ | ||||
slot | slot | |||
When the client presents a volatile filehandle, the server makes the | When the client presents a volatile filehandle, the server makes the | |||
following checks, which assume that the check for the volatile bit | following checks, which assume that the check for the volatile bit | |||
has passed. If the server boot time is less than the current server | has passed. If the server boot time is less than the current server | |||
boot time, return NFS4ERR_FHEXPIRED. If slot is out of range, return | boot time, return NFS4ERR_FHEXPIRED. If slot is out of range, return | |||
NFS4ERR_BADHANDLE. If the generation number does not match, return | NFS4ERR_BADHANDLE. If the generation number does not match, return | |||
NFS4ERR_FHEXPIRED. | NFS4ERR_FHEXPIRED. | |||
When the server restarts, the table is gone (it is volatile). | When the server restarts, the table is gone (it is volatile). | |||
skipping to change at page 125, line 27 ¶ | skipping to change at line 5802 ¶ | |||
5.8.2.44. Attribute 54: time_modify_set | 5.8.2.44. Attribute 54: time_modify_set | |||
Sets the time of last modification to the object. SETATTR use only. | Sets the time of last modification to the object. SETATTR use only. | |||
5.9. Interpreting owner and owner_group | 5.9. Interpreting owner and owner_group | |||
The RECOMMENDED attributes "owner" and "owner_group" (and also users | The RECOMMENDED attributes "owner" and "owner_group" (and also users | |||
and groups within the "acl" attribute) are represented in terms of a | and groups within the "acl" attribute) are represented in terms of a | |||
UTF-8 string. To avoid a representation that is tied to a particular | UTF-8 string. To avoid a representation that is tied to a particular | |||
underlying implementation at the client or server, the use of the | underlying implementation at the client or server, the use of the | |||
UTF-8 string has been chosen. Note that Section 6.1 of RFC 2624 [52] | UTF-8 string has been chosen. Note that Section 6.1 of [52] provides | |||
provides additional rationale. It is expected that the client and | additional rationale. It is expected that the client and server will | |||
server will have their own local representation of owner and | have their own local representation of owner and owner_group that is | |||
owner_group that is used for local storage or presentation to the end | used for local storage or presentation to the end user. Therefore, | |||
user. Therefore, it is expected that when these attributes are | it is expected that when these attributes are transferred between the | |||
transferred between the client and server, the local representation | client and server, the local representation is translated to a syntax | |||
is translated to a syntax of the form "user@dns_domain". This will | of the form "user@dns_domain". This will allow for a client and | |||
allow for a client and server that do not use the same local | server that do not use the same local representation the ability to | |||
representation the ability to translate to a common syntax that can | translate to a common syntax that can be interpreted by both. | |||
be interpreted by both. | ||||
Similarly, security principals may be represented in different ways | Similarly, security principals may be represented in different ways | |||
by different security mechanisms. Servers normally translate these | by different security mechanisms. Servers normally translate these | |||
representations into a common format, generally that used by local | representations into a common format, generally that used by local | |||
storage, to serve as a means of identifying the users corresponding | storage, to serve as a means of identifying the users corresponding | |||
to these security principals. When these local identifiers are | to these security principals. When these local identifiers are | |||
translated to the form of the owner attribute, associated with files | translated to the form of the owner attribute, associated with files | |||
created by such principals, they identify, in a common format, the | created by such principals, they identify, in a common format, the | |||
users associated with each corresponding set of security principals. | users associated with each corresponding set of security principals. | |||
skipping to change at page 127, line 23 ¶ | skipping to change at line 5894 ¶ | |||
The owner string "nobody" may be used to designate an anonymous user, | The owner string "nobody" may be used to designate an anonymous user, | |||
which will be associated with a file created by a security principal | which will be associated with a file created by a security principal | |||
that cannot be mapped through normal means to the owner attribute. | that cannot be mapped through normal means to the owner attribute. | |||
Users and implementations of NFSv4.1 SHOULD NOT use "nobody" to | Users and implementations of NFSv4.1 SHOULD NOT use "nobody" to | |||
designate a real user whose access is not anonymous. | designate a real user whose access is not anonymous. | |||
5.10. Character Case Attributes | 5.10. Character Case Attributes | |||
With respect to the case_insensitive and case_preserving attributes, | With respect to the case_insensitive and case_preserving attributes, | |||
each UCS-4 character (which UTF-8 encodes) can be mapped according to | each UCS-4 character (which UTF-8 encodes) can be mapped according to | |||
Appendix B.2 of RFC 3454 [16]. For general character handling and | Appendix B.2 of [16]. For general character handling and | |||
internationalization issues, see Section 14. | internationalization issues, see Section 14. | |||
5.11. Directory Notification Attributes | 5.11. Directory Notification Attributes | |||
As described in Section 18.39, the client can request a minimum delay | As described in Section 18.39, the client can request a minimum delay | |||
for notifications of changes to attributes, but the server is free to | for notifications of changes to attributes, but the server is free to | |||
ignore what the client requests. The client can determine in advance | ignore what the client requests. The client can determine in advance | |||
what notification delays the server will accept by sending a GETATTR | what notification delays the server will accept by sending a GETATTR | |||
operation for either or both of two directory notification | operation for either or both of two directory notification | |||
attributes. When the client calls the GET_DIR_DELEGATION operation | attributes. When the client calls the GET_DIR_DELEGATION operation | |||
skipping to change at page 138, line 35 ¶ | skipping to change at line 6397 ¶ | |||
Note that some masks have coincident values, for example, | Note that some masks have coincident values, for example, | |||
ACE4_READ_DATA and ACE4_LIST_DIRECTORY. The mask entries | ACE4_READ_DATA and ACE4_LIST_DIRECTORY. The mask entries | |||
ACE4_LIST_DIRECTORY, ACE4_ADD_FILE, and ACE4_ADD_SUBDIRECTORY are | ACE4_LIST_DIRECTORY, ACE4_ADD_FILE, and ACE4_ADD_SUBDIRECTORY are | |||
intended to be used with directory objects, while ACE4_READ_DATA, | intended to be used with directory objects, while ACE4_READ_DATA, | |||
ACE4_WRITE_DATA, and ACE4_APPEND_DATA are intended to be used with | ACE4_WRITE_DATA, and ACE4_APPEND_DATA are intended to be used with | |||
non-directory objects. | non-directory objects. | |||
6.2.1.3.1. Discussion of Mask Attributes | 6.2.1.3.1. Discussion of Mask Attributes | |||
ACE4_READ_DATA Operation(s) affected: | ACE4_READ_DATA | |||
Operation(s) affected: | ||||
READ | READ | |||
OPEN | OPEN | |||
Discussion: | Discussion: | |||
Permission to read the data of the file. | Permission to read the data of the file. | |||
Servers SHOULD allow a user the ability to read the data of the | Servers SHOULD allow a user the ability to read the data of the | |||
file when only the ACE4_EXECUTE access mask bit is allowed. | file when only the ACE4_EXECUTE access mask bit is allowed. | |||
ACE4_LIST_DIRECTORY Operation(s) affected: | ACE4_LIST_DIRECTORY | |||
Operation(s) affected: | ||||
READDIR | READDIR | |||
Discussion: | Discussion: | |||
Permission to list the contents of a directory. | Permission to list the contents of a directory. | |||
ACE4_WRITE_DATA Operation(s) affected: | ACE4_WRITE_DATA | |||
Operation(s) affected: | ||||
WRITE | WRITE | |||
OPEN | OPEN | |||
SETATTR of size | SETATTR of size | |||
Discussion: | Discussion: | |||
Permission to modify a file's data. | Permission to modify a file's data. | |||
ACE4_ADD_FILE Operation(s) affected: | ACE4_ADD_FILE | |||
Operation(s) affected: | ||||
CREATE | CREATE | |||
LINK | LINK | |||
OPEN | OPEN | |||
RENAME | RENAME | |||
Discussion: | Discussion: | |||
Permission to add a new file in a directory. The CREATE | Permission to add a new file in a directory. The CREATE | |||
operation is affected when nfs_ftype4 is NF4LNK, NF4BLK, | operation is affected when nfs_ftype4 is NF4LNK, NF4BLK, | |||
NF4CHR, NF4SOCK, or NF4FIFO. (NF4DIR is not listed because it | NF4CHR, NF4SOCK, or NF4FIFO. (NF4DIR is not listed because it | |||
is covered by ACE4_ADD_SUBDIRECTORY.) OPEN is affected when | is covered by ACE4_ADD_SUBDIRECTORY.) OPEN is affected when | |||
used to create a regular file. LINK and RENAME are always | used to create a regular file. LINK and RENAME are always | |||
affected. | affected. | |||
ACE4_APPEND_DATA Operation(s) affected: | ACE4_APPEND_DATA | |||
Operation(s) affected: | ||||
WRITE | WRITE | |||
OPEN | OPEN | |||
SETATTR of size | SETATTR of size | |||
Discussion: | Discussion: | |||
The ability to modify a file's data, but only starting at EOF. | The ability to modify a file's data, but only starting at EOF. | |||
This allows for the notion of append-only files, by allowing | This allows for the notion of append-only files, by allowing | |||
ACE4_APPEND_DATA and denying ACE4_WRITE_DATA to the same user | ACE4_APPEND_DATA and denying ACE4_WRITE_DATA to the same user | |||
or group. If a file has an ACL such as the one described above | or group. If a file has an ACL such as the one described above | |||
and a WRITE request is made for somewhere other than EOF, the | and a WRITE request is made for somewhere other than EOF, the | |||
server SHOULD return NFS4ERR_ACCESS. | server SHOULD return NFS4ERR_ACCESS. | |||
ACE4_ADD_SUBDIRECTORY Operation(s) affected: | ACE4_ADD_SUBDIRECTORY | |||
Operation(s) affected: | ||||
CREATE | CREATE | |||
RENAME | RENAME | |||
Discussion: | Discussion: | |||
Permission to create a subdirectory in a directory. The CREATE | Permission to create a subdirectory in a directory. The CREATE | |||
operation is affected when nfs_ftype4 is NF4DIR. The RENAME | operation is affected when nfs_ftype4 is NF4DIR. The RENAME | |||
operation is always affected. | operation is always affected. | |||
ACE4_READ_NAMED_ATTRS Operation(s) affected: | ACE4_READ_NAMED_ATTRS | |||
Operation(s) affected: | ||||
OPENATTR | OPENATTR | |||
Discussion: | Discussion: | |||
Permission to read the named attributes of a file or to look up | Permission to read the named attributes of a file or to look up | |||
the named attribute directory. OPENATTR is affected when it is | the named attribute directory. OPENATTR is affected when it is | |||
not used to create a named attribute directory. This is when | not used to create a named attribute directory. This is when | |||
1) createdir is TRUE, but a named attribute directory already | 1) createdir is TRUE, but a named attribute directory already | |||
exists, or 2) createdir is FALSE. | exists, or 2) createdir is FALSE. | |||
ACE4_WRITE_NAMED_ATTRS Operation(s) affected: | ACE4_WRITE_NAMED_ATTRS | |||
Operation(s) affected: | ||||
OPENATTR | OPENATTR | |||
Discussion: | Discussion: | |||
Permission to write the named attributes of a file or to create | Permission to write the named attributes of a file or to create | |||
a named attribute directory. OPENATTR is affected when it is | a named attribute directory. OPENATTR is affected when it is | |||
used to create a named attribute directory. This is when | used to create a named attribute directory. This is when | |||
createdir is TRUE and no named attribute directory exists. The | createdir is TRUE and no named attribute directory exists. The | |||
ability to check whether or not a named attribute directory | ability to check whether or not a named attribute directory | |||
exists depends on the ability to look it up; therefore, users | exists depends on the ability to look it up; therefore, users | |||
also need the ACE4_READ_NAMED_ATTRS permission in order to | also need the ACE4_READ_NAMED_ATTRS permission in order to | |||
create a named attribute directory. | create a named attribute directory. | |||
ACE4_EXECUTE Operation(s) affected: | ACE4_EXECUTE | |||
Operation(s) affected: | ||||
READ | READ | |||
OPEN | OPEN | |||
REMOVE | REMOVE | |||
RENAME | RENAME | |||
LINK | LINK | |||
CREATE | CREATE | |||
Discussion: | Discussion: | |||
Permission to execute a file. | Permission to execute a file. | |||
Servers SHOULD allow a user the ability to read the data of the | Servers SHOULD allow a user the ability to read the data of the | |||
file when only the ACE4_EXECUTE access mask bit is allowed. | file when only the ACE4_EXECUTE access mask bit is allowed. | |||
This is because there is no way to execute a file without | This is because there is no way to execute a file without | |||
reading the contents. Though a server may treat ACE4_EXECUTE | reading the contents. Though a server may treat ACE4_EXECUTE | |||
and ACE4_READ_DATA bits identically when deciding to permit a | and ACE4_READ_DATA bits identically when deciding to permit a | |||
READ operation, it SHOULD still allow the two bits to be set | READ operation, it SHOULD still allow the two bits to be set | |||
independently in ACLs, and MUST distinguish between them when | independently in ACLs, and MUST distinguish between them when | |||
replying to ACCESS operations. In particular, servers SHOULD | replying to ACCESS operations. In particular, servers SHOULD | |||
NOT silently turn on one of the two bits when the other is set, | NOT silently turn on one of the two bits when the other is set, | |||
as that would make it impossible for the client to correctly | as that would make it impossible for the client to correctly | |||
enforce the distinction between read and execute permissions. | enforce the distinction between read and execute permissions. | |||
As an example, following a SETATTR of the following ACL: | As an example, following a SETATTR of the following ACL: | |||
nfsuser:ACE4_EXECUTE:ALLOW | nfsuser:ACE4_EXECUTE:ALLOW | |||
A subsequent GETATTR of ACL for that file SHOULD return: | A subsequent GETATTR of ACL for that file SHOULD return: | |||
nfsuser:ACE4_EXECUTE:ALLOW | nfsuser:ACE4_EXECUTE:ALLOW | |||
Rather than: | Rather than: | |||
nfsuser:ACE4_EXECUTE/ACE4_READ_DATA:ALLOW | nfsuser:ACE4_EXECUTE/ACE4_READ_DATA:ALLOW | |||
ACE4_EXECUTE Operation(s) affected: | ACE4_EXECUTE | |||
Operation(s) affected: | ||||
LOOKUP | LOOKUP | |||
Discussion: | Discussion: | |||
Permission to traverse/search a directory. | Permission to traverse/search a directory. | |||
ACE4_DELETE_CHILD Operation(s) affected: | ACE4_DELETE_CHILD | |||
Operation(s) affected: | ||||
REMOVE | REMOVE | |||
RENAME | RENAME | |||
Discussion: | Discussion: | |||
Permission to delete a file or directory within a directory. | Permission to delete a file or directory within a directory. | |||
See Section 6.2.1.3.2 for information on ACE4_DELETE and | See Section 6.2.1.3.2 for information on ACE4_DELETE and | |||
ACE4_DELETE_CHILD interact. | ACE4_DELETE_CHILD interact. | |||
ACE4_READ_ATTRIBUTES Operation(s) affected: | ACE4_READ_ATTRIBUTES | |||
Operation(s) affected: | ||||
GETATTR of file system object attributes | GETATTR of file system object attributes | |||
VERIFY | VERIFY | |||
NVERIFY | NVERIFY | |||
READDIR | READDIR | |||
Discussion: | Discussion: | |||
The ability to read basic attributes (non-ACLs) of a file. On | The ability to read basic attributes (non-ACLs) of a file. On | |||
a UNIX system, basic attributes can be thought of as the stat- | a UNIX system, basic attributes can be thought of as the stat- | |||
level attributes. Allowing this access mask bit would mean | level attributes. Allowing this access mask bit would mean | |||
that the entity can execute "ls -l" and stat. If a READDIR | that the entity can execute "ls -l" and stat. If a READDIR | |||
operation requests attributes, this mask must be allowed for | operation requests attributes, this mask must be allowed for | |||
the READDIR to succeed. | the READDIR to succeed. | |||
ACE4_WRITE_ATTRIBUTES Operation(s) affected: | ACE4_WRITE_ATTRIBUTES | |||
Operation(s) affected: | ||||
SETATTR of time_access_set, time_backup, | SETATTR of time_access_set, time_backup, | |||
time_create, time_modify_set, mimetype, hidden, system | time_create, time_modify_set, mimetype, hidden, system | |||
Discussion: | Discussion: | |||
Permission to change the times associated with a file or | Permission to change the times associated with a file or | |||
directory to an arbitrary value. Also permission to change the | directory to an arbitrary value. Also permission to change the | |||
mimetype, hidden, and system attributes. A user having | mimetype, hidden, and system attributes. A user having | |||
ACE4_WRITE_DATA or ACE4_WRITE_ATTRIBUTES will be allowed to set | ACE4_WRITE_DATA or ACE4_WRITE_ATTRIBUTES will be allowed to set | |||
the times associated with a file to the current server time. | the times associated with a file to the current server time. | |||
ACE4_WRITE_RETENTION Operation(s) affected: | ACE4_WRITE_RETENTION | |||
Operation(s) affected: | ||||
SETATTR of retention_set, retentevt_set. | SETATTR of retention_set, retentevt_set. | |||
Discussion: | Discussion: | |||
Permission to modify the durations of event and non-event-based | Permission to modify the durations of event and non-event-based | |||
retention. Also permission to enable event and non-event-based | retention. Also permission to enable event and non-event-based | |||
retention. A server MAY behave such that setting | retention. A server MAY behave such that setting | |||
ACE4_WRITE_ATTRIBUTES allows ACE4_WRITE_RETENTION. | ACE4_WRITE_ATTRIBUTES allows ACE4_WRITE_RETENTION. | |||
ACE4_WRITE_RETENTION_HOLD Operation(s) affected: | ACE4_WRITE_RETENTION_HOLD | |||
Operation(s) affected: | ||||
SETATTR of retention_hold. | SETATTR of retention_hold. | |||
Discussion: | Discussion: | |||
Permission to modify the administration retention holds. A | Permission to modify the administration retention holds. A | |||
server MAY map ACE4_WRITE_ATTRIBUTES to | server MAY map ACE4_WRITE_ATTRIBUTES to | |||
ACE_WRITE_RETENTION_HOLD. | ACE_WRITE_RETENTION_HOLD. | |||
ACE4_DELETE Operation(s) affected: | ACE4_DELETE | |||
Operation(s) affected: | ||||
REMOVE | REMOVE | |||
Discussion: | Discussion: | |||
Permission to delete the file or directory. See | Permission to delete the file or directory. See | |||
Section 6.2.1.3.2 for information on ACE4_DELETE and | Section 6.2.1.3.2 for information on ACE4_DELETE and | |||
ACE4_DELETE_CHILD interact. | ACE4_DELETE_CHILD interact. | |||
ACE4_READ_ACL Operation(s) affected: | ACE4_READ_ACL | |||
Operation(s) affected: | ||||
GETATTR of acl, dacl, or sacl | GETATTR of acl, dacl, or sacl | |||
NVERIFY | NVERIFY | |||
VERIFY | VERIFY | |||
Discussion: | ||||
Discussion: | ||||
Permission to read the ACL. | Permission to read the ACL. | |||
ACE4_WRITE_ACL Operation(s) affected: | ACE4_WRITE_ACL | |||
Operation(s) affected: | ||||
SETATTR of acl and mode | SETATTR of acl and mode | |||
Discussion: | Discussion: | |||
Permission to write the acl and mode attributes. | Permission to write the acl and mode attributes. | |||
ACE4_WRITE_OWNER Operation(s) affected: | ACE4_WRITE_OWNER | |||
Operation(s) affected: | ||||
SETATTR of owner and owner_group | SETATTR of owner and owner_group | |||
Discussion: | Discussion: | |||
Permission to write the owner and owner_group attributes. On | Permission to write the owner and owner_group attributes. On | |||
UNIX systems, this is the ability to execute chown() and | UNIX systems, this is the ability to execute chown() and | |||
chgrp(). | chgrp(). | |||
ACE4_SYNCHRONIZE Operation(s) affected: | ACE4_SYNCHRONIZE | |||
Operation(s) affected: | ||||
NONE | NONE | |||
Discussion: | Discussion: | |||
Permission to use the file object as a synchronization | Permission to use the file object as a synchronization | |||
primitive for interprocess communication. This permission is | primitive for interprocess communication. This permission is | |||
not enforced or interpreted by the NFSv4.1 server on behalf of | not enforced or interpreted by the NFSv4.1 server on behalf of | |||
the client. | the client. | |||
Typically, the ACE4_SYNCHRONIZE permission is only meaningful | Typically, the ACE4_SYNCHRONIZE permission is only meaningful | |||
on local file systems, i.e., file systems not accessed via | on local file systems, i.e., file systems not accessed via | |||
NFSv4.1. The reason that the permission bit exists is that | NFSv4.1. The reason that the permission bit exists is that | |||
some operating environments, such as Windows, use | some operating environments, such as Windows, use | |||
ACE4_SYNCHRONIZE. | ACE4_SYNCHRONIZE. | |||
skipping to change at page 263, line 32 ¶ | skipping to change at line 12349 ¶ | |||
When such detailed locking information, not necessarily including the | When such detailed locking information, not necessarily including the | |||
associated stateids, is available: | associated stateids, is available: | |||
* It is possible to detect reclaim requests that attempt to reclaim | * It is possible to detect reclaim requests that attempt to reclaim | |||
locks that did not exist before the transfer, rejecting them with | locks that did not exist before the transfer, rejecting them with | |||
NFS4ERR_RECLAIM_BAD (Section 15.1.9.4). | NFS4ERR_RECLAIM_BAD (Section 15.1.9.4). | |||
* It is possible when dealing with non-reclaim requests, to | * It is possible when dealing with non-reclaim requests, to | |||
determine whether they conflict with existing locks, eliminating | determine whether they conflict with existing locks, eliminating | |||
the need to return NFS4ERR_GRACE ((Section 15.1.9.2) on non- | the need to return NFS4ERR_GRACE (Section 15.1.9.2) on non-reclaim | |||
reclaim requests. | requests. | |||
It is possible for implementations of grace periods in connection | It is possible for implementations of grace periods in connection | |||
with file system transitions not to have detailed locking information | with file system transitions not to have detailed locking information | |||
available at the destination server, in which case the security | available at the destination server, in which case the security | |||
situation is exactly as described in Section 8.4.2.1.1. | situation is exactly as described in Section 8.4.2.1.1. | |||
11.11.9.2. Leases and File System Transitions | 11.11.9.2. Leases and File System Transitions | |||
In the case of lease renewal, the client may not be submitting | In the case of lease renewal, the client may not be submitting | |||
requests for a file system that has been transferred to another | requests for a file system that has been transferred to another | |||
skipping to change at page 279, line 45 ¶ | skipping to change at line 13126 ¶ | |||
* The absence of RELEASE_LOCKOWNER means that the one case in which | * The absence of RELEASE_LOCKOWNER means that the one case in which | |||
an operation could not be deferred by use of NFS4ERR_DELAY no | an operation could not be deferred by use of NFS4ERR_DELAY no | |||
longer exists. | longer exists. | |||
* Sequencing of operations is no longer done using owner-based | * Sequencing of operations is no longer done using owner-based | |||
operation sequences numbers. Instead, sequencing is session- | operation sequences numbers. Instead, sequencing is session- | |||
based | based | |||
As a result, when sessions are not transferred, the techniques | As a result, when sessions are not transferred, the techniques | |||
discussed in Section 7.2 of [68] are adequate and will not be further | discussed of Section 7.2 of [68] are adequate and will not be further | |||
discussed. | discussed. | |||
11.14.3. Server Responsibilities in Effecting Session Transfer | 11.14.3. Server Responsibilities in Effecting Session Transfer | |||
The basic responsibility of the source server in effecting session | The basic responsibility of the source server in effecting session | |||
transfer is to make available to the destination server a description | transfer is to make available to the destination server a description | |||
of the current state of each slot with the session, including: | of the current state of each slot with the session, including: | |||
* The last sequence value received for that slot. | * The last sequence value received for that slot. | |||
skipping to change at page 284, line 36 ¶ | skipping to change at line 13357 ¶ | |||
In order to get the necessary information, let us re-send the chain | In order to get the necessary information, let us re-send the chain | |||
of LOOKUPs with GETFHs and GETATTRs to at least get the fsids so we | of LOOKUPs with GETFHs and GETATTRs to at least get the fsids so we | |||
can be sure where the appropriate file system boundaries are. The | can be sure where the appropriate file system boundaries are. The | |||
client could choose to get fs_locations_info at the same time but in | client could choose to get fs_locations_info at the same time but in | |||
most cases the client will have a good guess as to where file system | most cases the client will have a good guess as to where file system | |||
boundaries are (because of where NFS4ERR_MOVED was, and was not, | boundaries are (because of where NFS4ERR_MOVED was, and was not, | |||
received) making fetching of fs_locations_info unnecessary. | received) making fetching of fs_locations_info unnecessary. | |||
OP01: PUTROOTFH --> NFS_OK | OP01: PUTROOTFH --> NFS_OK | |||
- Current fh is root of pseudo-fs. | * Current fh is root of pseudo-fs. | |||
OP02: GETATTR(fsid) --> NFS_OK | OP02: GETATTR(fsid) --> NFS_OK | |||
- Just for completeness. Normally, clients will know the fsid of | * Just for completeness. Normally, clients will know the fsid of | |||
the pseudo-fs as soon as they establish communication with a | the pseudo-fs as soon as they establish communication with a | |||
server. | server. | |||
OP03: LOOKUP "this" --> NFS_OK | OP03: LOOKUP "this" --> NFS_OK | |||
OP04: GETATTR(fsid) --> NFS_OK | OP04: GETATTR(fsid) --> NFS_OK | |||
- Get current fsid to see where file system boundaries are. The | * Get current fsid to see where file system boundaries are. The | |||
fsid will be that for the pseudo-fs in this example, so no | fsid will be that for the pseudo-fs in this example, so no | |||
boundary. | boundary. | |||
OP05: GETFH --> NFS_OK | OP05: GETFH --> NFS_OK | |||
- Current fh is for /this and is within pseudo-fs. | ||||
* Current fh is for /this and is within pseudo-fs. | ||||
OP06: LOOKUP "is" --> NFS_OK | OP06: LOOKUP "is" --> NFS_OK | |||
- Current fh is for /this/is and is within pseudo-fs. | * Current fh is for /this/is and is within pseudo-fs. | |||
OP07: GETATTR(fsid) --> NFS_OK | OP07: GETATTR(fsid) --> NFS_OK | |||
- Get current fsid to see where file system boundaries are. The | * Get current fsid to see where file system boundaries are. The | |||
fsid will be that for the pseudo-fs in this example, so no | fsid will be that for the pseudo-fs in this example, so no | |||
boundary. | boundary. | |||
OP08: GETFH --> NFS_OK | OP08: GETFH --> NFS_OK | |||
- Current fh is for /this/is and is within pseudo-fs. | * Current fh is for /this/is and is within pseudo-fs. | |||
OP09: LOOKUP "the" --> NFS_OK | OP09: LOOKUP "the" --> NFS_OK | |||
- Current fh is for /this/is/the and is within pseudo-fs. | * Current fh is for /this/is/the and is within pseudo-fs. | |||
OP10: GETATTR(fsid) --> NFS_OK | OP10: GETATTR(fsid) --> NFS_OK | |||
- Get current fsid to see where file system boundaries are. The | * Get current fsid to see where file system boundaries are. The | |||
fsid will be that for the pseudo-fs in this example, so no | fsid will be that for the pseudo-fs in this example, so no | |||
boundary. | boundary. | |||
OP11: GETFH --> NFS_OK | OP11: GETFH --> NFS_OK | |||
- Current fh is for /this/is/the and is within pseudo-fs. | * Current fh is for /this/is/the and is within pseudo-fs. | |||
OP12: LOOKUP "path" --> NFS_OK | OP12: LOOKUP "path" --> NFS_OK | |||
- Current fh is for /this/is/the/path and is within a new, absent | * Current fh is for /this/is/the/path and is within a new, absent | |||
file system, but ... | file system, but ... | |||
- The client will never see the value of that fh. | * The client will never see the value of that fh. | |||
OP13: GETATTR(fsid, fs_locations_info) --> NFS_OK | OP13: GETATTR(fsid, fs_locations_info) --> NFS_OK | |||
- We are getting the fsid to know where the file system boundaries | * We are getting the fsid to know where the file system | |||
are. In this operation, the fsid will be different than that of | boundaries are. In this operation, the fsid will be different | |||
the parent directory (which in turn was retrieved in OP10). Note | than that of the parent directory (which in turn was retrieved | |||
that the fsid we are given will not necessarily be preserved at | in OP10). Note that the fsid we are given will not necessarily | |||
the new location. That fsid might be different, and in fact the | be preserved at the new location. That fsid might be | |||
fsid we have for this file system might be a valid fsid of a | different, and in fact the fsid we have for this file system | |||
different file system on that new server. | might be a valid fsid of a different file system on that new | |||
server. | ||||
- In this particular case, we are pretty sure anyway that what has | * In this particular case, we are pretty sure anyway that what | |||
moved is /this/is/the/path rather than /this/is/the since we have | has moved is /this/is/the/path rather than /this/is/the since | |||
the fsid of the latter and it is that of the pseudo-fs, which | we have the fsid of the latter and it is that of the pseudo-fs, | |||
presumably cannot move. However, in other examples, we might not | which presumably cannot move. However, in other examples, we | |||
have this kind of information to rely on (e.g., /this/is/the might | might not have this kind of information to rely on (e.g., | |||
be a non-pseudo file system separate from /this/is/the/path), so | /this/is/the might be a non-pseudo file system separate from | |||
we need to have other reliable source information on the boundary | /this/is/the/path), so we need to have other reliable source | |||
of the file system that is moved. If, for example, the file | information on the boundary of the file system that is moved. | |||
system /this/is had moved, we would have a case of migration | If, for example, the file system /this/is had moved, we would | |||
rather than referral, and once the boundaries of the migrated file | have a case of migration rather than referral, and once the | |||
system was clear we could fetch fs_locations_info. | boundaries of the migrated file system was clear we could fetch | |||
fs_locations_info. | ||||
- We are fetching fs_locations_info because the fact that we got an | * We are fetching fs_locations_info because the fact that we got | |||
NFS4ERR_MOVED at this point means that it is most likely that this | an NFS4ERR_MOVED at this point means that it is most likely | |||
is a referral and we need the destination. Even if it is the case | that this is a referral and we need the destination. Even if | |||
that /this/is/the is a file system that has migrated, we will | it is the case that /this/is/the is a file system that has | |||
still need the location information for that file system. | migrated, we will still need the location information for that | |||
file system. | ||||
OP14: GETFH --> NFS4ERR_MOVED | OP14: GETFH --> NFS4ERR_MOVED | |||
- Fails because current fh is in an absent file system at the start | * Fails because current fh is in an absent file system at the | |||
of the operation, and the specification makes no exception for | start of the operation, and the specification makes no | |||
GETFH. Note that this means the server will never send the client | exception for GETFH. Note that this means the server will | |||
a filehandle from within an absent file system. | never send the client a filehandle from within an absent file | |||
system. | ||||
Given the above, the client knows where the root of the absent file | Given the above, the client knows where the root of the absent file | |||
system is (/this/is/the/path) by noting where the change of fsid | system is (/this/is/the/path) by noting where the change of fsid | |||
occurred (between "the" and "path"). The fs_locations_info attribute | occurred (between "the" and "path"). The fs_locations_info attribute | |||
also gives the client the actual location of the absent file system, | also gives the client the actual location of the absent file system, | |||
so that the referral can proceed. The server gives the client the | so that the referral can proceed. The server gives the client the | |||
bare minimum of information about the absent file system so that | bare minimum of information about the absent file system so that | |||
there will be very little scope for problems of conflict between | there will be very little scope for problems of conflict between | |||
information sent by the referring server and information of the file | information sent by the referring server and information of the file | |||
system's home. No filehandles and very few attributes are present on | system's home. No filehandles and very few attributes are present on | |||
skipping to change at page 331, line 12 ¶ | skipping to change at line 15563 ¶ | |||
following, all arithmetic is the modulo arithmetic as described | following, all arithmetic is the modulo arithmetic as described | |||
above. | above. | |||
The server MUST support a minimum VALID_SEQID_RANGE. The minimum is | The server MUST support a minimum VALID_SEQID_RANGE. The minimum is | |||
defined as: VALID_SEQID_RANGE = summation over 1..N of | defined as: VALID_SEQID_RANGE = summation over 1..N of | |||
(ca_maxoperations(i) - 1), where N is the number of session fore | (ca_maxoperations(i) - 1), where N is the number of session fore | |||
channels and ca_maxoperations(i) is the value of the ca_maxoperations | channels and ca_maxoperations(i) is the value of the ca_maxoperations | |||
returned from CREATE_SESSION of the i'th session. The reason for "- | returned from CREATE_SESSION of the i'th session. The reason for "- | |||
1" is to allow for the required SEQUENCE operation. The server MAY | 1" is to allow for the required SEQUENCE operation. The server MAY | |||
support a VALID_SEQID_RANGE value larger than the minimum. The | support a VALID_SEQID_RANGE value larger than the minimum. The | |||
maximum VALID_SEQID_RANGE is (2 ^ 32 - 2) (accounting for zero not | maximum VALID_SEQID_RANGE is (2^(32) - 2) (accounting for zero not | |||
being a valid "seqid" value). | being a valid "seqid" value). | |||
If the server finds the "seqid" is zero, the NFS4ERR_BAD_STATEID | If the server finds the "seqid" is zero, the NFS4ERR_BAD_STATEID | |||
error is returned to the client. The server further validates the | error is returned to the client. The server further validates the | |||
"seqid" to ensure it is within the range of parallelism, | "seqid" to ensure it is within the range of parallelism, | |||
VALID_SEQID_RANGE. If the "seqid" value is outside of that range, | VALID_SEQID_RANGE. If the "seqid" value is outside of that range, | |||
the error NFS4ERR_OLD_STATEID is returned to the client. Upon | the error NFS4ERR_OLD_STATEID is returned to the client. Upon | |||
receipt of NFS4ERR_OLD_STATEID, the client updates the stateid in the | receipt of NFS4ERR_OLD_STATEID, the client updates the stateid in the | |||
layout request based on processing of other layout requests and re- | layout request based on processing of other layout requests and re- | |||
sends the operation to the server. | sends the operation to the server. | |||
skipping to change at page 374, line 28 ¶ | skipping to change at line 17580 ¶ | |||
NFS error numbers are assigned to failed operations within a Compound | NFS error numbers are assigned to failed operations within a Compound | |||
(COMPOUND or CB_COMPOUND) request. A Compound request contains a | (COMPOUND or CB_COMPOUND) request. A Compound request contains a | |||
number of NFS operations that have their results encoded in sequence | number of NFS operations that have their results encoded in sequence | |||
in a Compound reply. The results of successful operations will | in a Compound reply. The results of successful operations will | |||
consist of an NFS4_OK status followed by the encoded results of the | consist of an NFS4_OK status followed by the encoded results of the | |||
operation. If an NFS operation fails, an error status will be | operation. If an NFS operation fails, an error status will be | |||
entered in the reply and the Compound request will be terminated. | entered in the reply and the Compound request will be terminated. | |||
15.1. Error Definitions | 15.1. Error Definitions | |||
Protocol Error Definitions | ||||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| Error | Number | Description | | | Error | Number | Description | | |||
+===================================+========+===================+ | +===================================+========+===================+ | |||
| NFS4_OK | 0 | Section 15.1.3.1 | | | NFS4_OK | 0 | Section 15.1.3.1 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_ACCESS | 13 | Section 15.1.6.1 | | | NFS4ERR_ACCESS | 13 | Section 15.1.6.1 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_ATTRNOTSUPP | 10032 | Section 15.1.15.1 | | | NFS4ERR_ATTRNOTSUPP | 10032 | Section 15.1.15.1 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_ADMIN_REVOKED | 10047 | Section 15.1.5.1 | | | NFS4ERR_ADMIN_REVOKED | 10047 | Section 15.1.5.1 | | |||
skipping to change at page 378, line 48 ¶ | skipping to change at line 17790 ¶ | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_WRONGSEC | 10016 | Section 15.1.6.3 | | | NFS4ERR_WRONGSEC | 10016 | Section 15.1.6.3 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_WRONG_CRED | 10082 | Section 15.1.6.4 | | | NFS4ERR_WRONG_CRED | 10082 | Section 15.1.6.4 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_WRONG_TYPE | 10083 | Section 15.1.2.9 | | | NFS4ERR_WRONG_TYPE | 10083 | Section 15.1.2.9 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
| NFS4ERR_XDEV | 18 | Section 15.1.4.12 | | | NFS4ERR_XDEV | 18 | Section 15.1.4.12 | | |||
+-----------------------------------+--------+-------------------+ | +-----------------------------------+--------+-------------------+ | |||
Table 11 | Table 11: Protocol Error Definitions | |||
15.1.1. General Errors | 15.1.1. General Errors | |||
This section deals with errors that are applicable to a broad set of | This section deals with errors that are applicable to a broad set of | |||
different purposes. | different purposes. | |||
15.1.1.1. NFS4ERR_BADXDR (Error Code 10036) | 15.1.1.1. NFS4ERR_BADXDR (Error Code 10036) | |||
The arguments for this operation do not match those specified in the | The arguments for this operation do not match those specified in the | |||
XDR definition. This includes situations in which the request ends | XDR definition. This includes situations in which the request ends | |||
skipping to change at page 398, line 25 ¶ | skipping to change at line 18701 ¶ | |||
This section contains a table that gives the valid error returns for | This section contains a table that gives the valid error returns for | |||
each protocol operation. The error code NFS4_OK (indicating no | each protocol operation. The error code NFS4_OK (indicating no | |||
error) is not listed but should be understood to be returnable by all | error) is not listed but should be understood to be returnable by all | |||
operations with two important exceptions: | operations with two important exceptions: | |||
* The operations that MUST NOT be implemented: OPEN_CONFIRM, | * The operations that MUST NOT be implemented: OPEN_CONFIRM, | |||
RELEASE_LOCKOWNER, RENEW, SETCLIENTID, and SETCLIENTID_CONFIRM. | RELEASE_LOCKOWNER, RENEW, SETCLIENTID, and SETCLIENTID_CONFIRM. | |||
* The invalid operation: ILLEGAL. | * The invalid operation: ILLEGAL. | |||
Valid Error Returns for Each Protocol Operation | ||||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
| Operation | Errors | | | Operation | Errors | | |||
+======================+========================================+ | +======================+========================================+ | |||
| ACCESS | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | ACCESS | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_IO, NFS4ERR_MOVED, | | | | NFS4ERR_IO, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| BACKCHANNEL_CTL | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | BACKCHANNEL_CTL | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_INVAL, | | | | NFS4ERR_DELAY, NFS4ERR_INVAL, | | |||
| | NFS4ERR_NOENT, | | | | NFS4ERR_NOENT, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| BIND_CONN_TO_SESSION | NFS4ERR_BADSESSION, NFS4ERR_BADXDR, | | | BIND_CONN_TO_SESSION | NFS4ERR_BADSESSION, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_SESSION_DIGEST, | | | | NFS4ERR_BAD_SESSION_DIGEST, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, NFS4ERR_NOT_ONLY_OP, | | | | NFS4ERR_INVAL, NFS4ERR_NOT_ONLY_OP, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| CLOSE | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | | CLOSE | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_LOCKS_HELD, NFS4ERR_MOVED, | | | | NFS4ERR_LOCKS_HELD, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OLD_STATEID, | | | | NFS4ERR_OLD_STATEID, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| COMMIT | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | COMMIT | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_IO, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_IO, | | |||
| | NFS4ERR_ISDIR, NFS4ERR_MOVED, | | | | NFS4ERR_ISDIR, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| CREATE | NFS4ERR_ACCESS, NFS4ERR_ATTRNOTSUPP, | | | CREATE | NFS4ERR_ACCESS, NFS4ERR_ATTRNOTSUPP, | | |||
| | NFS4ERR_BADCHAR, NFS4ERR_BADNAME, | | | | NFS4ERR_BADCHAR, NFS4ERR_BADNAME, | | |||
| | NFS4ERR_BADOWNER, NFS4ERR_BADTYPE, | | | | NFS4ERR_BADOWNER, NFS4ERR_BADTYPE, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_DQUOT, | | | | NFS4ERR_DELAY, NFS4ERR_DQUOT, | | |||
| | NFS4ERR_EXIST, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXIST, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MLINK, NFS4ERR_MOVED, | | | | NFS4ERR_MLINK, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NAMETOOLONG, | | | | NFS4ERR_NAMETOOLONG, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOSPC, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOSPC, | | |||
| | NFS4ERR_NOTDIR, | | | | NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_PERM, NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_PERM, NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNSAFE_COMPOUND | | | | NFS4ERR_UNSAFE_COMPOUND | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| CREATE_SESSION | NFS4ERR_BADXDR, NFS4ERR_CLID_INUSE, | | | CREATE_SESSION | NFS4ERR_BADXDR, NFS4ERR_CLID_INUSE, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, NFS4ERR_NOENT, | | | | NFS4ERR_INVAL, NFS4ERR_NOENT, | | |||
| | NFS4ERR_NOT_ONLY_OP, NFS4ERR_NOSPC, | | | | NFS4ERR_NOT_ONLY_OP, NFS4ERR_NOSPC, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SEQ_MISORDERED, | | | | NFS4ERR_SEQ_MISORDERED, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE_CLIENTID, | | | | NFS4ERR_STALE_CLIENTID, | | |||
| | NFS4ERR_TOOSMALL, | | | | NFS4ERR_TOOSMALL, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| DELEGPURGE | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | DELEGPURGE | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_NOTSUPP, | | | | NFS4ERR_DELAY, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| DELEGRETURN | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | | DELEGRETURN | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, | | | | NFS4ERR_DELEG_REVOKED, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_INVAL, NFS4ERR_MOVED, | | | | NFS4ERR_INVAL, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OLD_STATEID, | | | | NFS4ERR_OLD_STATEID, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| DESTROY_CLIENTID | NFS4ERR_BADXDR, NFS4ERR_CLIENTID_BUSY, | | | DESTROY_CLIENTID | NFS4ERR_BADXDR, NFS4ERR_CLIENTID_BUSY, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_NOT_ONLY_OP, | | | | NFS4ERR_NOT_ONLY_OP, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE_CLIENTID, | | | | NFS4ERR_STALE_CLIENTID, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| DESTROY_SESSION | NFS4ERR_BACK_CHAN_BUSY, | | | DESTROY_SESSION | NFS4ERR_BACK_CHAN_BUSY, | | |||
| | NFS4ERR_BADSESSION, NFS4ERR_BADXDR, | | | | NFS4ERR_BADSESSION, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_CB_PATH_DOWN, | | | | NFS4ERR_CB_PATH_DOWN, | | |||
| | NFS4ERR_CONN_NOT_BOUND_TO_SESSION, | | | | NFS4ERR_CONN_NOT_BOUND_TO_SESSION, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_NOT_ONLY_OP, | | | | NFS4ERR_NOT_ONLY_OP, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE_CLIENTID, | | | | NFS4ERR_STALE_CLIENTID, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| EXCHANGE_ID | NFS4ERR_BADCHAR, NFS4ERR_BADXDR, | | | EXCHANGE_ID | NFS4ERR_BADCHAR, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_CLID_INUSE, | | | | NFS4ERR_CLID_INUSE, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_ENCR_ALG_UNSUPP, | | | | NFS4ERR_ENCR_ALG_UNSUPP, | | |||
| | NFS4ERR_HASH_ALG_UNSUPP, | | | | NFS4ERR_HASH_ALG_UNSUPP, | | |||
| | NFS4ERR_INVAL, NFS4ERR_NOENT, | | | | NFS4ERR_INVAL, NFS4ERR_NOENT, | | |||
| | NFS4ERR_NOT_ONLY_OP, NFS4ERR_NOT_SAME, | | | | NFS4ERR_NOT_ONLY_OP, NFS4ERR_NOT_SAME, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| FREE_STATEID | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | | FREE_STATEID | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_LOCKS_HELD, | | | | NFS4ERR_LOCKS_HELD, | | |||
| | NFS4ERR_OLD_STATEID, | | | | NFS4ERR_OLD_STATEID, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| GET_DIR_DELEGATION | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | GET_DIR_DELEGATION | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DIRDELEG_UNAVAIL, | | | | NFS4ERR_DIRDELEG_UNAVAIL, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOTDIR, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOTDIR, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| GETATTR | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | GETATTR | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| GETDEVICEINFO | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | GETDEVICEINFO | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_INVAL, | | | | NFS4ERR_DELAY, NFS4ERR_INVAL, | | |||
| | NFS4ERR_NOENT, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOENT, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_TOOSMALL, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_TOOSMALL, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| GETDEVICELIST | NFS4ERR_BADXDR, NFS4ERR_BAD_COOKIE, | | | GETDEVICELIST | NFS4ERR_BADXDR, NFS4ERR_BAD_COOKIE, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_IO, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_IO, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOTSUPP, NFS4ERR_NOT_SAME, | | | | NFS4ERR_NOTSUPP, NFS4ERR_NOT_SAME, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| GETFH | NFS4ERR_FHEXPIRED, NFS4ERR_MOVED, | | | GETFH | NFS4ERR_FHEXPIRED, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_STALE | | | | NFS4ERR_STALE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| ILLEGAL | NFS4ERR_BADXDR, NFS4ERR_OP_ILLEGAL | | | ILLEGAL | NFS4ERR_BADXDR, NFS4ERR_OP_ILLEGAL | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LAYOUTCOMMIT | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | LAYOUTCOMMIT | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_ATTRNOTSUPP, | | | | NFS4ERR_ATTRNOTSUPP, | | |||
| | NFS4ERR_BADIOMODE, NFS4ERR_BADLAYOUT, | | | | NFS4ERR_BADIOMODE, NFS4ERR_BADLAYOUT, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_DELEG_REVOKED, | | | | NFS4ERR_DELAY, NFS4ERR_DELEG_REVOKED, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FBIG, | | | | NFS4ERR_EXPIRED, NFS4ERR_FBIG, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_ISDIR NFS4ERR_MOVED, | | | | NFS4ERR_ISDIR NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | |||
skipping to change at page 404, line 26 ¶ | skipping to change at line 18970 ¶ | |||
| | NFS4ERR_RECLAIM_CONFLICT, | | | | NFS4ERR_RECLAIM_CONFLICT, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LAYOUTGET | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | LAYOUTGET | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_BADIOMODE, NFS4ERR_BADLAYOUT, | | | | NFS4ERR_BADIOMODE, NFS4ERR_BADLAYOUT, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | | | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_LAYOUTTRYLATER, | | | | NFS4ERR_LAYOUTTRYLATER, | | |||
| | NFS4ERR_LAYOUTUNAVAILABLE, | | | | NFS4ERR_LAYOUTUNAVAILABLE, | | |||
| | NFS4ERR_LOCKED, NFS4ERR_MOVED, | | | | NFS4ERR_LOCKED, NFS4ERR_MOVED, | | |||
skipping to change at page 405, line 4 ¶ | skipping to change at line 18995 ¶ | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOOSMALL, | | | | NFS4ERR_TOOSMALL, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LAYOUTRETURN | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | | LAYOUTRETURN | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, | | | | NFS4ERR_DELEG_REVOKED, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
| | NFS4ERR_ISDIR, NFS4ERR_MOVED, | | | | NFS4ERR_ISDIR, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_NO_GRACE, NFS4ERR_OLD_STATEID, | | | | NFS4ERR_NO_GRACE, NFS4ERR_OLD_STATEID, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LINK | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | | LINK | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | | | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DQUOT, NFS4ERR_EXIST, | | | | NFS4ERR_DQUOT, NFS4ERR_EXIST, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_FILE_OPEN, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_FILE_OPEN, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
| | NFS4ERR_ISDIR, NFS4ERR_IO, | | | | NFS4ERR_ISDIR, NFS4ERR_IO, | | |||
| | NFS4ERR_MLINK, NFS4ERR_MOVED, | | | | NFS4ERR_MLINK, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NAMETOOLONG, | | | | NFS4ERR_NAMETOOLONG, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOSPC, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOSPC, | | |||
skipping to change at page 405, line 47 ¶ | skipping to change at line 19036 ¶ | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_SYMLINK, | | | | NFS4ERR_STALE, NFS4ERR_SYMLINK, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONGSEC, NFS4ERR_WRONG_TYPE, | | | | NFS4ERR_WRONGSEC, NFS4ERR_WRONG_TYPE, | | |||
| | NFS4ERR_XDEV | | | | NFS4ERR_XDEV | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LOCK | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | LOCK | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_RANGE, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_RANGE, | | |||
| | NFS4ERR_BAD_STATEID, NFS4ERR_DEADLOCK, | | | | NFS4ERR_BAD_STATEID, NFS4ERR_DEADLOCK, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DENIED, NFS4ERR_EXPIRED, | | | | NFS4ERR_DENIED, NFS4ERR_EXPIRED, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_ISDIR, | | | | NFS4ERR_INVAL, NFS4ERR_ISDIR, | | |||
| | NFS4ERR_LOCK_NOTSUPP, | | | | NFS4ERR_LOCK_NOTSUPP, | | |||
| | NFS4ERR_LOCK_RANGE, NFS4ERR_MOVED, | | | | NFS4ERR_LOCK_RANGE, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
skipping to change at page 406, line 24 ¶ | skipping to change at line 19060 ¶ | |||
| | NFS4ERR_RECLAIM_CONFLICT, | | | | NFS4ERR_RECLAIM_CONFLICT, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_SYMLINK, | | | | NFS4ERR_STALE, NFS4ERR_SYMLINK, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LOCKT | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | LOCKT | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_RANGE, | | | | NFS4ERR_BAD_RANGE, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DENIED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_DENIED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
| | NFS4ERR_ISDIR, NFS4ERR_LOCK_RANGE, | | | | NFS4ERR_ISDIR, NFS4ERR_LOCK_RANGE, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_STALE, | | | | NFS4ERR_ROFS, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LOCKU | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | LOCKU | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_RANGE, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_RANGE, | | |||
| | NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_INVAL, NFS4ERR_LOCK_RANGE, | | | | NFS4ERR_INVAL, NFS4ERR_LOCK_RANGE, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OLD_STATEID, | | | | NFS4ERR_OLD_STATEID, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LOOKUP | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | | LOOKUP | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | | | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_IO, NFS4ERR_MOVED, | | | | NFS4ERR_IO, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NAMETOOLONG, NFS4ERR_NOENT, | | | | NFS4ERR_NAMETOOLONG, NFS4ERR_NOENT, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONGSEC | | | | NFS4ERR_WRONGSEC | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| LOOKUPP | NFS4ERR_ACCESS, NFS4ERR_DEADSESSION, | | | LOOKUPP | NFS4ERR_ACCESS, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_DELAY, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_IO, NFS4ERR_MOVED, | | | | NFS4ERR_IO, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOTDIR, | | | | NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONGSEC | | | | NFS4ERR_WRONGSEC | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| NVERIFY | NFS4ERR_ACCESS, NFS4ERR_ATTRNOTSUPP, | | | NVERIFY | NFS4ERR_ACCESS, NFS4ERR_ATTRNOTSUPP, | | |||
| | NFS4ERR_BADCHAR, NFS4ERR_BADXDR, | | | | NFS4ERR_BADCHAR, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SAME, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SAME, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| OPEN | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | OPEN | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_ATTRNOTSUPP, NFS4ERR_BADCHAR, | | | | NFS4ERR_ATTRNOTSUPP, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADNAME, NFS4ERR_BADOWNER, | | | | NFS4ERR_BADNAME, NFS4ERR_BADOWNER, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_ALREADY_WANTED, | | | | NFS4ERR_DELEG_ALREADY_WANTED, | | |||
| | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | | | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | |||
| | NFS4ERR_EXIST, NFS4ERR_EXPIRED, | | | | NFS4ERR_EXIST, NFS4ERR_EXPIRED, | | |||
| | NFS4ERR_FBIG, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_FBIG, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
skipping to change at page 408, line 41 ¶ | skipping to change at line 19167 ¶ | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_SHARE_DENIED, NFS4ERR_STALE, | | | | NFS4ERR_SHARE_DENIED, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNSAFE_COMPOUND, | | | | NFS4ERR_UNSAFE_COMPOUND, | | |||
| | NFS4ERR_WRONGSEC, NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONGSEC, NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| OPEN_CONFIRM | NFS4ERR_NOTSUPP | | | OPEN_CONFIRM | NFS4ERR_NOTSUPP | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| OPEN_DOWNGRADE | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | | OPEN_DOWNGRADE | NFS4ERR_ADMIN_REVOKED, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_INVAL, NFS4ERR_MOVED, | | | | NFS4ERR_INVAL, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OLD_STATEID, | | | | NFS4ERR_OLD_STATEID, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED | | | | NFS4ERR_WRONG_CRED | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| OPENATTR | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | OPENATTR | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DQUOT, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_DQUOT, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_IO, NFS4ERR_MOVED, | | | | NFS4ERR_IO, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOSPC, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOSPC, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNSAFE_COMPOUND, | | | | NFS4ERR_UNSAFE_COMPOUND, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| PUTFH | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | | PUTFH | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_MOVED, | | | | NFS4ERR_MOVED, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | | | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| PUTPUBFH | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | PUTPUBFH | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | | | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| PUTROOTFH | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | PUTROOTFH | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | | | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| READ | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | READ | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, | | | | NFS4ERR_DELEG_REVOKED, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_EXPIRED, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
| | NFS4ERR_ISDIR, NFS4ERR_IO, | | | | NFS4ERR_ISDIR, NFS4ERR_IO, | | |||
| | NFS4ERR_LOCKED, NFS4ERR_MOVED, | | | | NFS4ERR_LOCKED, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OLD_STATEID, NFS4ERR_OPENMODE, | | | | NFS4ERR_OLD_STATEID, NFS4ERR_OPENMODE, | | |||
skipping to change at page 410, line 36 ¶ | skipping to change at line 19251 ¶ | |||
| | NFS4ERR_PNFS_IO_HOLE, | | | | NFS4ERR_PNFS_IO_HOLE, | | |||
| | NFS4ERR_PNFS_NO_LAYOUT, | | | | NFS4ERR_PNFS_NO_LAYOUT, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_SYMLINK, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| READDIR | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | READDIR | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_COOKIE, | | | | NFS4ERR_BAD_COOKIE, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_IO, NFS4ERR_MOVED, | | | | NFS4ERR_IO, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_NOT_SAME, | | | | NFS4ERR_NOT_SAME, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOOSMALL, NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOOSMALL, NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| READLINK | NFS4ERR_ACCESS, NFS4ERR_DEADSESSION, | | | READLINK | NFS4ERR_ACCESS, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_DELAY, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| RECLAIM_COMPLETE | NFS4ERR_BADXDR, | | | RECLAIM_COMPLETE | NFS4ERR_BADXDR, | | |||
| | NFS4ERR_COMPLETE_ALREADY, | | | | NFS4ERR_COMPLETE_ALREADY, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_CRED, NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| RELEASE_LOCKOWNER | NFS4ERR_NOTSUPP | | | RELEASE_LOCKOWNER | NFS4ERR_NOTSUPP | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| REMOVE | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | | REMOVE | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | | | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_FILE_OPEN, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_FILE_OPEN, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
| | NFS4ERR_IO, NFS4ERR_MOVED, | | | | NFS4ERR_IO, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NAMETOOLONG, NFS4ERR_NOENT, | | | | NFS4ERR_NAMETOOLONG, NFS4ERR_NOENT, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_NOTEMPTY, | | | | NFS4ERR_NOTEMPTY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| RENAME | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | | RENAME | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | | | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DQUOT, NFS4ERR_EXIST, | | | | NFS4ERR_DQUOT, NFS4ERR_EXIST, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_FILE_OPEN, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_FILE_OPEN, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, | | |||
| | NFS4ERR_IO, NFS4ERR_MLINK, | | | | NFS4ERR_IO, NFS4ERR_MLINK, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NAMETOOLONG, | | | | NFS4ERR_MOVED, NFS4ERR_NAMETOOLONG, | | |||
| | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOSPC, NFS4ERR_NOTDIR, | | | | NFS4ERR_NOSPC, NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_NOTEMPTY, | | | | NFS4ERR_NOTEMPTY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONGSEC, NFS4ERR_XDEV | | | | NFS4ERR_WRONGSEC, NFS4ERR_XDEV | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| RENEW | NFS4ERR_NOTSUPP | | | RENEW | NFS4ERR_NOTSUPP | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| RESTOREFH | NFS4ERR_DEADSESSION, | | | RESTOREFH | NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_MOVED, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | | | NFS4ERR_TOO_MANY_OPS, NFS4ERR_WRONGSEC | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SAVEFH | NFS4ERR_DEADSESSION, | | | SAVEFH | NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_MOVED, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SECINFO | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | | SECINFO | NFS4ERR_ACCESS, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | | | NFS4ERR_BADNAME, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NAMETOOLONG, | | | | NFS4ERR_MOVED, NFS4ERR_NAMETOOLONG, | | |||
| | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_NOENT, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOTDIR, | | | | NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SECINFO_NO_NAME | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | | SECINFO_NO_NAME | NFS4ERR_ACCESS, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_INVAL, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOENT, | | | | NFS4ERR_MOVED, NFS4ERR_NOENT, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTDIR, | | |||
| | NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SEQUENCE | NFS4ERR_BADSESSION, NFS4ERR_BADSLOT, | | | SEQUENCE | NFS4ERR_BADSESSION, NFS4ERR_BADSLOT, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_HIGH_SLOT, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_HIGH_SLOT, | | |||
| | NFS4ERR_CONN_NOT_BOUND_TO_SESSION, | | | | NFS4ERR_CONN_NOT_BOUND_TO_SESSION, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SEQUENCE_POS, | | | | NFS4ERR_SEQUENCE_POS, | | |||
| | NFS4ERR_SEQ_FALSE_RETRY, | | | | NFS4ERR_SEQ_FALSE_RETRY, | | |||
| | NFS4ERR_SEQ_MISORDERED, | | | | NFS4ERR_SEQ_MISORDERED, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SET_SSV | NFS4ERR_BADXDR, | | | SET_SSV | NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_SESSION_DIGEST, | | | | NFS4ERR_BAD_SESSION_DIGEST, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, | | | | NFS4ERR_INVAL, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SETATTR | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | SETATTR | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_ATTRNOTSUPP, NFS4ERR_BADCHAR, | | | | NFS4ERR_ATTRNOTSUPP, NFS4ERR_BADCHAR, | | |||
| | NFS4ERR_BADOWNER, NFS4ERR_BADXDR, | | | | NFS4ERR_BADOWNER, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | | | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FBIG, | | | | NFS4ERR_EXPIRED, NFS4ERR_FBIG, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_LOCKED, NFS4ERR_MOVED, | | | | NFS4ERR_LOCKED, NFS4ERR_MOVED, | | |||
skipping to change at page 414, line 38 ¶ | skipping to change at line 19431 ¶ | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_PERM, NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_PERM, NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_STALE, NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SETCLIENTID | NFS4ERR_NOTSUPP | | | SETCLIENTID | NFS4ERR_NOTSUPP | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| SETCLIENTID_CONFIRM | NFS4ERR_NOTSUPP | | | SETCLIENTID_CONFIRM | NFS4ERR_NOTSUPP | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| TEST_STATEID | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | TEST_STATEID | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, | | | | NFS4ERR_DELAY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| VERIFY | NFS4ERR_ACCESS, NFS4ERR_ATTRNOTSUPP, | | | VERIFY | NFS4ERR_ACCESS, NFS4ERR_ATTRNOTSUPP, | | |||
| | NFS4ERR_BADCHAR, NFS4ERR_BADXDR, | | | | NFS4ERR_BADCHAR, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOT_SAME, | | | | NFS4ERR_NOT_SAME, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| WANT_DELEGATION | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | | WANT_DELEGATION | NFS4ERR_BADXDR, NFS4ERR_DEADSESSION, | | |||
| | NFS4ERR_DELAY, | | | | NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_ALREADY_WANTED, | | | | NFS4ERR_DELEG_ALREADY_WANTED, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOTSUPP, NFS4ERR_NO_GRACE, | | | | NFS4ERR_NOTSUPP, NFS4ERR_NO_GRACE, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_RECALLCONFLICT, | | | | NFS4ERR_RECALLCONFLICT, | | |||
| | NFS4ERR_RECLAIM_BAD, | | | | NFS4ERR_RECLAIM_BAD, | | |||
| | NFS4ERR_RECLAIM_CONFLICT, | | | | NFS4ERR_RECLAIM_CONFLICT, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | | | NFS4ERR_SERVERFAULT, NFS4ERR_STALE, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
| WRITE | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | | WRITE | NFS4ERR_ACCESS, NFS4ERR_ADMIN_REVOKED, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | | | NFS4ERR_DELEG_REVOKED, NFS4ERR_DQUOT, | | |||
| | NFS4ERR_EXPIRED, NFS4ERR_FBIG, | | | | NFS4ERR_EXPIRED, NFS4ERR_FBIG, | | |||
| | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | | | NFS4ERR_FHEXPIRED, NFS4ERR_GRACE, | | |||
| | NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_ISDIR, NFS4ERR_LOCKED, | | | | NFS4ERR_ISDIR, NFS4ERR_LOCKED, | | |||
| | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | | | NFS4ERR_MOVED, NFS4ERR_NOFILEHANDLE, | | |||
| | NFS4ERR_NOSPC, NFS4ERR_OLD_STATEID, | | | | NFS4ERR_NOSPC, NFS4ERR_OLD_STATEID, | | |||
skipping to change at page 416, line 21 ¶ | skipping to change at line 19504 ¶ | |||
| | NFS4ERR_PNFS_NO_LAYOUT, | | | | NFS4ERR_PNFS_NO_LAYOUT, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | | | NFS4ERR_ROFS, NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_STALE, NFS4ERR_SYMLINK, | | | | NFS4ERR_STALE, NFS4ERR_SYMLINK, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+----------------------+----------------------------------------+ | +----------------------+----------------------------------------+ | |||
+----------------------+----------------------------------------+ | ||||
Table 12 | Table 12: Valid Error Returns for Each Protocol Operation | |||
15.3. Callback Operations and Their Valid Errors | 15.3. Callback Operations and Their Valid Errors | |||
This section contains a table that gives the valid error returns for | This section contains a table that gives the valid error returns for | |||
each callback operation. The error code NFS4_OK (indicating no | each callback operation. The error code NFS4_OK (indicating no | |||
error) is not listed but should be understood to be returnable by all | error) is not listed but should be understood to be returnable by all | |||
callback operations with the exception of CB_ILLEGAL. | callback operations with the exception of CB_ILLEGAL. | |||
Valid Error Returns for Each Protocol Callback Operation | ||||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
| Callback Operation | Errors | | | Callback Operation | Errors | | |||
+=========================+=======================================+ | +=========================+=======================================+ | |||
| CB_GETATTR | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | | CB_GETATTR | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DELAY, NFS4ERR_INVAL, | | | | NFS4ERR_DELAY, NFS4ERR_INVAL, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_ILLEGAL | NFS4ERR_BADXDR, NFS4ERR_OP_ILLEGAL | | | CB_ILLEGAL | NFS4ERR_BADXDR, NFS4ERR_OP_ILLEGAL | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_LAYOUTRECALL | NFS4ERR_BADHANDLE, NFS4ERR_BADIOMODE, | | | CB_LAYOUTRECALL | NFS4ERR_BADHANDLE, NFS4ERR_BADIOMODE, | | |||
| | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | | | NFS4ERR_BADXDR, NFS4ERR_BAD_STATEID, | | |||
| | NFS4ERR_DELAY, NFS4ERR_INVAL, | | | | NFS4ERR_DELAY, NFS4ERR_INVAL, | | |||
| | NFS4ERR_NOMATCHING_LAYOUT, | | | | NFS4ERR_NOMATCHING_LAYOUT, | | |||
| | NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | | | NFS4ERR_UNKNOWN_LAYOUTTYPE, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_NOTIFY | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | | CB_NOTIFY | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, NFS4ERR_DELAY, | | | | NFS4ERR_BAD_STATEID, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, NFS4ERR_NOTSUPP, | | | | NFS4ERR_INVAL, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_NOTIFY_DEVICEID | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | | CB_NOTIFY_DEVICEID | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, NFS4ERR_NOTSUPP, | | | | NFS4ERR_INVAL, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_NOTIFY_LOCK | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | | CB_NOTIFY_LOCK | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, NFS4ERR_DELAY, | | | | NFS4ERR_BAD_STATEID, NFS4ERR_DELAY, | | |||
| | NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_PUSH_DELEG | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | | CB_PUSH_DELEG | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DELAY, NFS4ERR_INVAL, | | | | NFS4ERR_DELAY, NFS4ERR_INVAL, | | |||
| | NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REJECT_DELEG, | | | | NFS4ERR_REJECT_DELEG, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS, | | | | NFS4ERR_TOO_MANY_OPS, | | |||
| | NFS4ERR_WRONG_TYPE | | | | NFS4ERR_WRONG_TYPE | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_RECALL | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | | CB_RECALL | NFS4ERR_BADHANDLE, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_STATEID, NFS4ERR_DELAY, | | | | NFS4ERR_BAD_STATEID, NFS4ERR_DELAY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_RECALL_ANY | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | | CB_RECALL_ANY | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, | | | | NFS4ERR_INVAL, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_RECALLABLE_OBJ_AVAIL | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | | CB_RECALLABLE_OBJ_AVAIL | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | |||
| | NFS4ERR_INVAL, NFS4ERR_NOTSUPP, | | | | NFS4ERR_INVAL, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_RECALL_SLOT | NFS4ERR_BADXDR, | | | CB_RECALL_SLOT | NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_HIGH_SLOT, NFS4ERR_DELAY, | | | | NFS4ERR_BAD_HIGH_SLOT, NFS4ERR_DELAY, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_SEQUENCE | NFS4ERR_BADSESSION, NFS4ERR_BADSLOT, | | | CB_SEQUENCE | NFS4ERR_BADSESSION, NFS4ERR_BADSLOT, | | |||
| | NFS4ERR_BADXDR, | | | | NFS4ERR_BADXDR, | | |||
| | NFS4ERR_BAD_HIGH_SLOT, | | | | NFS4ERR_BAD_HIGH_SLOT, | | |||
| | NFS4ERR_CONN_NOT_BOUND_TO_SESSION, | | | | NFS4ERR_CONN_NOT_BOUND_TO_SESSION, | | |||
| | NFS4ERR_DELAY, NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_DELAY, NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SEQUENCE_POS, | | | | NFS4ERR_SEQUENCE_POS, | | |||
| | NFS4ERR_SEQ_FALSE_RETRY, | | | | NFS4ERR_SEQ_FALSE_RETRY, | | |||
| | NFS4ERR_SEQ_MISORDERED, | | | | NFS4ERR_SEQ_MISORDERED, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
| CB_WANTS_CANCELLED | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | | CB_WANTS_CANCELLED | NFS4ERR_BADXDR, NFS4ERR_DELAY, | | |||
| | NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_OP_NOT_IN_SESSION, | | | | NFS4ERR_OP_NOT_IN_SESSION, | | |||
| | NFS4ERR_REP_TOO_BIG, | | | | NFS4ERR_REP_TOO_BIG, | | |||
| | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE, | | |||
| | NFS4ERR_REQ_TOO_BIG, | | | | NFS4ERR_REQ_TOO_BIG, | | |||
| | NFS4ERR_RETRY_UNCACHED_REP, | | | | NFS4ERR_RETRY_UNCACHED_REP, | | |||
| | NFS4ERR_SERVERFAULT, | | | | NFS4ERR_SERVERFAULT, | | |||
| | NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | |||
+-------------------------+---------------------------------------+ | +-------------------------+---------------------------------------+ | |||
+-------------------------+---------------------------------------+ | ||||
Table 13 | Table 13: Valid Error Returns for Each Protocol Callback Operation | |||
15.4. Errors and the Operations That Use Them | 15.4. Errors and the Operations That Use Them | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
| Error | Operations | | | Error | Operations | | |||
+===================================+===============================+ | +===================================+===============================+ | |||
| NFS4ERR_ACCESS | ACCESS, COMMIT, CREATE, | | | NFS4ERR_ACCESS | ACCESS, COMMIT, CREATE, | | |||
| | GETATTR, GET_DIR_DELEGATION, | | | | GETATTR, GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LINK, LOCK, LOCKT, LOCKU, | | | | LINK, LOCK, LOCKT, LOCKU, | | |||
| | LOOKUP, LOOKUPP, NVERIFY, | | | | LOOKUP, LOOKUPP, NVERIFY, | | |||
| | OPEN, OPENATTR, READ, | | | | OPEN, OPENATTR, READ, | | |||
| | READDIR, READLINK, REMOVE, | | | | READDIR, READLINK, REMOVE, | | |||
| | RENAME, SECINFO, | | | | RENAME, SECINFO, | | |||
| | SECINFO_NO_NAME, SETATTR, | | | | SECINFO_NO_NAME, SETATTR, | | |||
| | VERIFY, WRITE | | | | VERIFY, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_ADMIN_REVOKED | CLOSE, DELEGRETURN, | | | NFS4ERR_ADMIN_REVOKED | CLOSE, DELEGRETURN, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LOCK, LOCKU, | | | | LAYOUTRETURN, LOCK, LOCKU, | | |||
| | OPEN, OPEN_DOWNGRADE, READ, | | | | OPEN, OPEN_DOWNGRADE, READ, | | |||
| | SETATTR, WRITE | | | | SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_ATTRNOTSUPP | CREATE, LAYOUTCOMMIT, | | | NFS4ERR_ATTRNOTSUPP | CREATE, LAYOUTCOMMIT, | | |||
| | NVERIFY, OPEN, SETATTR, | | | | NVERIFY, OPEN, SETATTR, | | |||
| | VERIFY | | | | VERIFY | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BACK_CHAN_BUSY | DESTROY_SESSION | | | NFS4ERR_BACK_CHAN_BUSY | DESTROY_SESSION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADCHAR | CREATE, EXCHANGE_ID, LINK, | | | NFS4ERR_BADCHAR | CREATE, EXCHANGE_ID, LINK, | | |||
| | LOOKUP, NVERIFY, OPEN, | | | | LOOKUP, NVERIFY, OPEN, | | |||
| | REMOVE, RENAME, SECINFO, | | | | REMOVE, RENAME, SECINFO, | | |||
| | SETATTR, VERIFY | | | | SETATTR, VERIFY | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADHANDLE | CB_GETATTR, CB_LAYOUTRECALL, | | | NFS4ERR_BADHANDLE | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, CB_NOTIFY_LOCK, | | | | CB_NOTIFY, CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | PUTFH | | | | PUTFH | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADIOMODE | CB_LAYOUTRECALL, | | | NFS4ERR_BADIOMODE | CB_LAYOUTRECALL, | | |||
| | LAYOUTCOMMIT, LAYOUTGET | | | | LAYOUTCOMMIT, LAYOUTGET | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADLAYOUT | LAYOUTCOMMIT, LAYOUTGET | | | NFS4ERR_BADLAYOUT | LAYOUTCOMMIT, LAYOUTGET | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADNAME | CREATE, LINK, LOOKUP, OPEN, | | | NFS4ERR_BADNAME | CREATE, LINK, LOOKUP, OPEN, | | |||
| | REMOVE, RENAME, SECINFO | | | | REMOVE, RENAME, SECINFO | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADOWNER | CREATE, OPEN, SETATTR | | | NFS4ERR_BADOWNER | CREATE, OPEN, SETATTR | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADSESSION | BIND_CONN_TO_SESSION, | | | NFS4ERR_BADSESSION | BIND_CONN_TO_SESSION, | | |||
| | CB_SEQUENCE, | | | | CB_SEQUENCE, | | |||
| | DESTROY_SESSION, SEQUENCE | | | | DESTROY_SESSION, SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADSLOT | CB_SEQUENCE, SEQUENCE | | | NFS4ERR_BADSLOT | CB_SEQUENCE, SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADTYPE | CREATE | | | NFS4ERR_BADTYPE | CREATE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BADXDR | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_BADXDR | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_ILLEGAL, | | | | CB_GETATTR, CB_ILLEGAL, | | |||
| | CB_LAYOUTRECALL, CB_NOTIFY, | | | | CB_LAYOUTRECALL, CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 421, line 46 ¶ | skipping to change at line 19740 ¶ | |||
| | LOCKT, LOCKU, LOOKUP, | | | | LOCKT, LOCKU, LOOKUP, | | |||
| | NVERIFY, OPEN, OPENATTR, | | | | NVERIFY, OPEN, OPENATTR, | | |||
| | OPEN_DOWNGRADE, PUTFH, READ, | | | | OPEN_DOWNGRADE, PUTFH, READ, | | |||
| | READDIR, RECLAIM_COMPLETE, | | | | READDIR, RECLAIM_COMPLETE, | | |||
| | REMOVE, RENAME, SECINFO, | | | | REMOVE, RENAME, SECINFO, | | |||
| | SECINFO_NO_NAME, SEQUENCE, | | | | SECINFO_NO_NAME, SEQUENCE, | | |||
| | SETATTR, SET_SSV, | | | | SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BAD_COOKIE | GETDEVICELIST, READDIR | | | NFS4ERR_BAD_COOKIE | GETDEVICELIST, READDIR | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BAD_HIGH_SLOT | CB_RECALL_SLOT, CB_SEQUENCE, | | | NFS4ERR_BAD_HIGH_SLOT | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
| | SEQUENCE | | | | SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BAD_RANGE | LOCK, LOCKT, LOCKU | | | NFS4ERR_BAD_RANGE | LOCK, LOCKT, LOCKU | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BAD_SESSION_DIGEST | BIND_CONN_TO_SESSION, | | | NFS4ERR_BAD_SESSION_DIGEST | BIND_CONN_TO_SESSION, | | |||
| | SET_SSV | | | | SET_SSV | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_BAD_STATEID | CB_LAYOUTRECALL, CB_NOTIFY, | | | NFS4ERR_BAD_STATEID | CB_LAYOUTRECALL, CB_NOTIFY, | | |||
| | CB_NOTIFY_LOCK, CB_RECALL, | | | | CB_NOTIFY_LOCK, CB_RECALL, | | |||
| | CLOSE, DELEGRETURN, | | | | CLOSE, DELEGRETURN, | | |||
| | FREE_STATEID, LAYOUTGET, | | | | FREE_STATEID, LAYOUTGET, | | |||
| | LAYOUTRETURN, LOCK, LOCKU, | | | | LAYOUTRETURN, LOCK, LOCKU, | | |||
| | OPEN, OPEN_DOWNGRADE, READ, | | | | OPEN, OPEN_DOWNGRADE, READ, | | |||
| | SETATTR, WRITE | | | | SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_CB_PATH_DOWN | DESTROY_SESSION | | | NFS4ERR_CB_PATH_DOWN | DESTROY_SESSION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_CLID_INUSE | CREATE_SESSION, EXCHANGE_ID | | | NFS4ERR_CLID_INUSE | CREATE_SESSION, EXCHANGE_ID | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_CLIENTID_BUSY | DESTROY_CLIENTID | | | NFS4ERR_CLIENTID_BUSY | DESTROY_CLIENTID | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_COMPLETE_ALREADY | RECLAIM_COMPLETE | | | NFS4ERR_COMPLETE_ALREADY | RECLAIM_COMPLETE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_CONN_NOT_BOUND_TO_SESSION | CB_SEQUENCE, | | | NFS4ERR_CONN_NOT_BOUND_TO_SESSION | CB_SEQUENCE, | | |||
| | DESTROY_SESSION, SEQUENCE | | | | DESTROY_SESSION, SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DEADLOCK | LOCK | | | NFS4ERR_DEADLOCK | LOCK | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DEADSESSION | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_DEADSESSION | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, CLOSE, | | | | BIND_CONN_TO_SESSION, CLOSE, | | |||
| | COMMIT, CREATE, | | | | COMMIT, CREATE, | | |||
| | CREATE_SESSION, DELEGPURGE, | | | | CREATE_SESSION, DELEGPURGE, | | |||
| | DELEGRETURN, | | | | DELEGRETURN, | | |||
| | DESTROY_CLIENTID, | | | | DESTROY_CLIENTID, | | |||
| | DESTROY_SESSION, | | | | DESTROY_SESSION, | | |||
| | EXCHANGE_ID, FREE_STATEID, | | | | EXCHANGE_ID, FREE_STATEID, | | |||
| | GETATTR, GETDEVICEINFO, | | | | GETATTR, GETDEVICEINFO, | | |||
| | GETDEVICELIST, | | | | GETDEVICELIST, | | |||
skipping to change at page 423, line 18 ¶ | skipping to change at line 19796 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SEQUENCE, SETATTR, SET_SSV, | | | | SEQUENCE, SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DELAY | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_DELAY | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 424, line 5 ¶ | skipping to change at line 19830 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, SECINFO, | | | | RENAME, SECINFO, | | |||
| | SECINFO_NO_NAME, SEQUENCE, | | | | SECINFO_NO_NAME, SEQUENCE, | | |||
| | SETATTR, SET_SSV, | | | | SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DELEG_ALREADY_WANTED | OPEN, WANT_DELEGATION | | | NFS4ERR_DELEG_ALREADY_WANTED | OPEN, WANT_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DELEG_REVOKED | DELEGRETURN, LAYOUTCOMMIT, | | | NFS4ERR_DELEG_REVOKED | DELEGRETURN, LAYOUTCOMMIT, | | |||
| | LAYOUTGET, LAYOUTRETURN, | | | | LAYOUTGET, LAYOUTRETURN, | | |||
| | OPEN, READ, SETATTR, WRITE | | | | OPEN, READ, SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DENIED | LOCK, LOCKT | | | NFS4ERR_DENIED | LOCK, LOCKT | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DIRDELEG_UNAVAIL | GET_DIR_DELEGATION | | | NFS4ERR_DIRDELEG_UNAVAIL | GET_DIR_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_DQUOT | CREATE, LAYOUTGET, LINK, | | | NFS4ERR_DQUOT | CREATE, LAYOUTGET, LINK, | | |||
| | OPEN, OPENATTR, RENAME, | | | | OPEN, OPENATTR, RENAME, | | |||
| | SETATTR, WRITE | | | | SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_ENCR_ALG_UNSUPP | EXCHANGE_ID | | | NFS4ERR_ENCR_ALG_UNSUPP | EXCHANGE_ID | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_EXIST | CREATE, LINK, OPEN, RENAME | | | NFS4ERR_EXIST | CREATE, LINK, OPEN, RENAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_EXPIRED | CLOSE, DELEGRETURN, | | | NFS4ERR_EXPIRED | CLOSE, DELEGRETURN, | | |||
| | LAYOUTCOMMIT, LAYOUTRETURN, | | | | LAYOUTCOMMIT, LAYOUTRETURN, | | |||
| | LOCK, LOCKU, OPEN, | | | | LOCK, LOCKU, OPEN, | | |||
| | OPEN_DOWNGRADE, READ, | | | | OPEN_DOWNGRADE, READ, | | |||
| | SETATTR, WRITE | | | | SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_FBIG | LAYOUTCOMMIT, OPEN, SETATTR, | | | NFS4ERR_FBIG | LAYOUTCOMMIT, OPEN, SETATTR, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_FHEXPIRED | ACCESS, CLOSE, COMMIT, | | | NFS4ERR_FHEXPIRED | ACCESS, CLOSE, COMMIT, | | |||
| | CREATE, DELEGRETURN, | | | | CREATE, DELEGRETURN, | | |||
| | GETATTR, GETDEVICELIST, | | | | GETATTR, GETDEVICELIST, | | |||
| | GETFH, GET_DIR_DELEGATION, | | | | GETFH, GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, LOCKU, LOOKUP, | | | | LOCKT, LOCKU, LOOKUP, | | |||
| | LOOKUPP, NVERIFY, OPEN, | | | | LOOKUPP, NVERIFY, OPEN, | | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SETATTR, VERIFY, | | | | SETATTR, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_FILE_OPEN | LINK, REMOVE, RENAME | | | NFS4ERR_FILE_OPEN | LINK, REMOVE, RENAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_GRACE | GETATTR, GET_DIR_DELEGATION, | | | NFS4ERR_GRACE | GETATTR, GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, NVERIFY, OPEN, READ, | | | | LOCKT, NVERIFY, OPEN, READ, | | |||
| | REMOVE, RENAME, SETATTR, | | | | REMOVE, RENAME, SETATTR, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_HASH_ALG_UNSUPP | EXCHANGE_ID | | | NFS4ERR_HASH_ALG_UNSUPP | EXCHANGE_ID | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_INVAL | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_INVAL | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_PUSH_DELEG, | | | | CB_PUSH_DELEG, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, CREATE, | | | | CB_RECALL_ANY, CREATE, | | |||
| | CREATE_SESSION, DELEGRETURN, | | | | CREATE_SESSION, DELEGRETURN, | | |||
| | EXCHANGE_ID, GETATTR, | | | | EXCHANGE_ID, GETATTR, | | |||
skipping to change at page 425, line 51 ¶ | skipping to change at line 19910 ¶ | |||
| | LOCKT, LOCKU, LOOKUP, | | | | LOCKT, LOCKU, LOOKUP, | | |||
| | NVERIFY, OPEN, | | | | NVERIFY, OPEN, | | |||
| | OPEN_DOWNGRADE, READ, | | | | OPEN_DOWNGRADE, READ, | | |||
| | READDIR, READLINK, | | | | READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, SECINFO, | | | | RENAME, SECINFO, | | |||
| | SECINFO_NO_NAME, SETATTR, | | | | SECINFO_NO_NAME, SETATTR, | | |||
| | SET_SSV, VERIFY, | | | | SET_SSV, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_IO | ACCESS, COMMIT, CREATE, | | | NFS4ERR_IO | ACCESS, COMMIT, CREATE, | | |||
| | GETATTR, GETDEVICELIST, | | | | GETATTR, GETDEVICELIST, | | |||
| | GET_DIR_DELEGATION, | | | | GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LINK, LOOKUP, LOOKUPP, | | | | LINK, LOOKUP, LOOKUPP, | | |||
| | NVERIFY, OPEN, OPENATTR, | | | | NVERIFY, OPEN, OPENATTR, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | REMOVE, RENAME, SETATTR, | | | | REMOVE, RENAME, SETATTR, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_ISDIR | COMMIT, LAYOUTCOMMIT, | | | NFS4ERR_ISDIR | COMMIT, LAYOUTCOMMIT, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, OPEN, READ, WRITE | | | | LOCKT, OPEN, READ, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_LAYOUTTRYLATER | LAYOUTGET | | | NFS4ERR_LAYOUTTRYLATER | LAYOUTGET | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_LAYOUTUNAVAILABLE | LAYOUTGET | | | NFS4ERR_LAYOUTUNAVAILABLE | LAYOUTGET | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_LOCKED | LAYOUTGET, READ, SETATTR, | | | NFS4ERR_LOCKED | LAYOUTGET, READ, SETATTR, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_LOCKS_HELD | CLOSE, FREE_STATEID | | | NFS4ERR_LOCKS_HELD | CLOSE, FREE_STATEID | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_LOCK_NOTSUPP | LOCK | | | NFS4ERR_LOCK_NOTSUPP | LOCK | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_LOCK_RANGE | LOCK, LOCKT, LOCKU | | | NFS4ERR_LOCK_RANGE | LOCK, LOCKT, LOCKU | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_MLINK | CREATE, LINK, RENAME | | | NFS4ERR_MLINK | CREATE, LINK, RENAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_MOVED | ACCESS, CLOSE, COMMIT, | | | NFS4ERR_MOVED | ACCESS, CLOSE, COMMIT, | | |||
| | CREATE, DELEGRETURN, | | | | CREATE, DELEGRETURN, | | |||
| | GETATTR, GETFH, | | | | GETATTR, GETFH, | | |||
| | GET_DIR_DELEGATION, | | | | GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, LOCKU, LOOKUP, | | | | LOCKT, LOCKU, LOOKUP, | | |||
| | LOOKUPP, NVERIFY, OPEN, | | | | LOOKUPP, NVERIFY, OPEN, | | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, READ, READDIR, | | | | PUTFH, READ, READDIR, | | |||
| | READLINK, RECLAIM_COMPLETE, | | | | READLINK, RECLAIM_COMPLETE, | | |||
| | REMOVE, RENAME, RESTOREFH, | | | | REMOVE, RENAME, RESTOREFH, | | |||
| | SAVEFH, SECINFO, | | | | SAVEFH, SECINFO, | | |||
| | SECINFO_NO_NAME, SETATTR, | | | | SECINFO_NO_NAME, SETATTR, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NAMETOOLONG | CREATE, LINK, LOOKUP, OPEN, | | | NFS4ERR_NAMETOOLONG | CREATE, LINK, LOOKUP, OPEN, | | |||
| | REMOVE, RENAME, SECINFO | | | | REMOVE, RENAME, SECINFO | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOENT | BACKCHANNEL_CTL, | | | NFS4ERR_NOENT | BACKCHANNEL_CTL, | | |||
| | CREATE_SESSION, EXCHANGE_ID, | | | | CREATE_SESSION, EXCHANGE_ID, | | |||
| | GETDEVICEINFO, LOOKUP, | | | | GETDEVICEINFO, LOOKUP, | | |||
| | LOOKUPP, OPEN, OPENATTR, | | | | LOOKUPP, OPEN, OPENATTR, | | |||
| | REMOVE, RENAME, SECINFO, | | | | REMOVE, RENAME, SECINFO, | | |||
| | SECINFO_NO_NAME | | | | SECINFO_NO_NAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOFILEHANDLE | ACCESS, CLOSE, COMMIT, | | | NFS4ERR_NOFILEHANDLE | ACCESS, CLOSE, COMMIT, | | |||
| | CREATE, DELEGRETURN, | | | | CREATE, DELEGRETURN, | | |||
| | GETATTR, GETDEVICELIST, | | | | GETATTR, GETDEVICELIST, | | |||
| | GETFH, GET_DIR_DELEGATION, | | | | GETFH, GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, LOCKU, LOOKUP, | | | | LOCKT, LOCKU, LOOKUP, | | |||
| | LOOKUPP, NVERIFY, OPEN, | | | | LOOKUPP, NVERIFY, OPEN, | | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SETATTR, VERIFY, | | | | SETATTR, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOMATCHING_LAYOUT | CB_LAYOUTRECALL | | | NFS4ERR_NOMATCHING_LAYOUT | CB_LAYOUTRECALL | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOSPC | CREATE, CREATE_SESSION, | | | NFS4ERR_NOSPC | CREATE, CREATE_SESSION, | | |||
| | LAYOUTGET, LINK, OPEN, | | | | LAYOUTGET, LINK, OPEN, | | |||
| | OPENATTR, RENAME, SETATTR, | | | | OPENATTR, RENAME, SETATTR, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOTDIR | CREATE, GET_DIR_DELEGATION, | | | NFS4ERR_NOTDIR | CREATE, GET_DIR_DELEGATION, | | |||
| | LINK, LOOKUP, LOOKUPP, OPEN, | | | | LINK, LOOKUP, LOOKUPP, OPEN, | | |||
| | READDIR, REMOVE, RENAME, | | | | READDIR, REMOVE, RENAME, | | |||
| | SECINFO, SECINFO_NO_NAME | | | | SECINFO, SECINFO_NO_NAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOTEMPTY | REMOVE, RENAME | | | NFS4ERR_NOTEMPTY | REMOVE, RENAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOTSUPP | CB_LAYOUTRECALL, CB_NOTIFY, | | | NFS4ERR_NOTSUPP | CB_LAYOUTRECALL, CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, | | | | CB_PUSH_DELEG, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_WANTS_CANCELLED, | | | | CB_WANTS_CANCELLED, | | |||
| | DELEGPURGE, DELEGRETURN, | | | | DELEGPURGE, DELEGRETURN, | | |||
| | GETDEVICEINFO, | | | | GETDEVICEINFO, | | |||
| | GETDEVICELIST, | | | | GETDEVICELIST, | | |||
| | GET_DIR_DELEGATION, | | | | GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, | | | | LAYOUTRETURN, LINK, | | |||
| | OPENATTR, OPEN_CONFIRM, | | | | OPENATTR, OPEN_CONFIRM, | | |||
| | RELEASE_LOCKOWNER, RENEW, | | | | RELEASE_LOCKOWNER, RENEW, | | |||
| | SECINFO_NO_NAME, | | | | SECINFO_NO_NAME, | | |||
| | SETCLIENTID, | | | | SETCLIENTID, | | |||
| | SETCLIENTID_CONFIRM, | | | | SETCLIENTID_CONFIRM, | | |||
| | WANT_DELEGATION | | | | WANT_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOT_ONLY_OP | BIND_CONN_TO_SESSION, | | | NFS4ERR_NOT_ONLY_OP | BIND_CONN_TO_SESSION, | | |||
| | CREATE_SESSION, | | | | CREATE_SESSION, | | |||
| | DESTROY_CLIENTID, | | | | DESTROY_CLIENTID, | | |||
| | DESTROY_SESSION, EXCHANGE_ID | | | | DESTROY_SESSION, EXCHANGE_ID | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NOT_SAME | EXCHANGE_ID, GETDEVICELIST, | | | NFS4ERR_NOT_SAME | EXCHANGE_ID, GETDEVICELIST, | | |||
| | READDIR, VERIFY | | | | READDIR, VERIFY | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_NO_GRACE | LAYOUTCOMMIT, LAYOUTRETURN, | | | NFS4ERR_NO_GRACE | LAYOUTCOMMIT, LAYOUTRETURN, | | |||
| | LOCK, OPEN, WANT_DELEGATION | | | | LOCK, OPEN, WANT_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_OLD_STATEID | CLOSE, DELEGRETURN, | | | NFS4ERR_OLD_STATEID | CLOSE, DELEGRETURN, | | |||
| | FREE_STATEID, LAYOUTGET, | | | | FREE_STATEID, LAYOUTGET, | | |||
| | LAYOUTRETURN, LOCK, LOCKU, | | | | LAYOUTRETURN, LOCK, LOCKU, | | |||
| | OPEN, OPEN_DOWNGRADE, READ, | | | | OPEN, OPEN_DOWNGRADE, READ, | | |||
| | SETATTR, WRITE | | | | SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_OPENMODE | LAYOUTGET, LOCK, READ, | | | NFS4ERR_OPENMODE | LAYOUTGET, LOCK, READ, | | |||
| | SETATTR, WRITE | | | | SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_OP_ILLEGAL | CB_ILLEGAL, ILLEGAL | | | NFS4ERR_OP_ILLEGAL | CB_ILLEGAL, ILLEGAL | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_OP_NOT_IN_SESSION | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_OP_NOT_IN_SESSION | ACCESS, BACKCHANNEL_CTL, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, | | | | CB_RECALL_SLOT, | | |||
| | CB_WANTS_CANCELLED, CLOSE, | | | | CB_WANTS_CANCELLED, CLOSE, | | |||
skipping to change at page 429, line 41 ¶ | skipping to change at line 20067 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SETATTR, SET_SSV, | | | | SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_PERM | CREATE, OPEN, SETATTR | | | NFS4ERR_PERM | CREATE, OPEN, SETATTR | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_PNFS_IO_HOLE | READ, WRITE | | | NFS4ERR_PNFS_IO_HOLE | READ, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_PNFS_NO_LAYOUT | READ, WRITE | | | NFS4ERR_PNFS_NO_LAYOUT | READ, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_RECALLCONFLICT | LAYOUTGET, WANT_DELEGATION | | | NFS4ERR_RECALLCONFLICT | LAYOUTGET, WANT_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_RECLAIM_BAD | LAYOUTCOMMIT, LOCK, OPEN, | | | NFS4ERR_RECLAIM_BAD | LAYOUTCOMMIT, LOCK, OPEN, | | |||
| | WANT_DELEGATION | | | | WANT_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_RECLAIM_CONFLICT | LAYOUTCOMMIT, LOCK, OPEN, | | | NFS4ERR_RECLAIM_CONFLICT | LAYOUTCOMMIT, LOCK, OPEN, | | |||
| | WANT_DELEGATION | | | | WANT_DELEGATION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_REJECT_DELEG | CB_PUSH_DELEG | | | NFS4ERR_REJECT_DELEG | CB_PUSH_DELEG | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_REP_TOO_BIG | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_REP_TOO_BIG | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 430, line 51 ¶ | skipping to change at line 20117 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SEQUENCE, SETATTR, SET_SSV, | | | | SEQUENCE, SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_REP_TOO_BIG_TO_CACHE | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_REP_TOO_BIG_TO_CACHE | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 431, line 38 ¶ | skipping to change at line 20151 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SEQUENCE, SETATTR, SET_SSV, | | | | SEQUENCE, SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_REQ_TOO_BIG | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_REQ_TOO_BIG | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 432, line 25 ¶ | skipping to change at line 20185 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SEQUENCE, SETATTR, SET_SSV, | | | | SEQUENCE, SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_RETRY_UNCACHED_REP | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_RETRY_UNCACHED_REP | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 433, line 12 ¶ | skipping to change at line 20219 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SEQUENCE, SETATTR, SET_SSV, | | | | SEQUENCE, SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_ROFS | CREATE, LINK, LOCK, LOCKT, | | | NFS4ERR_ROFS | CREATE, LINK, LOCK, LOCKT, | | |||
| | OPEN, OPENATTR, | | | | OPEN, OPENATTR, | | |||
| | OPEN_DOWNGRADE, REMOVE, | | | | OPEN_DOWNGRADE, REMOVE, | | |||
| | RENAME, SETATTR, WRITE | | | | RENAME, SETATTR, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SAME | NVERIFY | | | NFS4ERR_SAME | NVERIFY | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SEQUENCE_POS | CB_SEQUENCE, SEQUENCE | | | NFS4ERR_SEQUENCE_POS | CB_SEQUENCE, SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SEQ_FALSE_RETRY | CB_SEQUENCE, SEQUENCE | | | NFS4ERR_SEQ_FALSE_RETRY | CB_SEQUENCE, SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SEQ_MISORDERED | CB_SEQUENCE, CREATE_SESSION, | | | NFS4ERR_SEQ_MISORDERED | CB_SEQUENCE, CREATE_SESSION, | | |||
| | SEQUENCE | | | | SEQUENCE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SERVERFAULT | ACCESS, | | | NFS4ERR_SERVERFAULT | ACCESS, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_NOTIFY, | | | | CB_GETATTR, CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_WANTS_CANCELLED, CLOSE, | | | | CB_WANTS_CANCELLED, CLOSE, | | |||
| | COMMIT, CREATE, | | | | COMMIT, CREATE, | | |||
| | CREATE_SESSION, DELEGPURGE, | | | | CREATE_SESSION, DELEGPURGE, | | |||
skipping to change at page 434, line 15 ¶ | skipping to change at line 20264 ¶ | |||
| | OPEN_DOWNGRADE, PUTFH, | | | | OPEN_DOWNGRADE, PUTFH, | | |||
| | PUTPUBFH, PUTROOTFH, READ, | | | | PUTPUBFH, PUTROOTFH, READ, | | |||
| | READDIR, READLINK, | | | | READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SETATTR, TEST_STATEID, | | | | SETATTR, TEST_STATEID, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SHARE_DENIED | OPEN | | | NFS4ERR_SHARE_DENIED | OPEN | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_STALE | ACCESS, CLOSE, COMMIT, | | | NFS4ERR_STALE | ACCESS, CLOSE, COMMIT, | | |||
| | CREATE, DELEGRETURN, | | | | CREATE, DELEGRETURN, | | |||
| | GETATTR, GETFH, | | | | GETATTR, GETFH, | | |||
| | GET_DIR_DELEGATION, | | | | GET_DIR_DELEGATION, | | |||
| | LAYOUTCOMMIT, LAYOUTGET, | | | | LAYOUTCOMMIT, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, LOCKU, LOOKUP, | | | | LOCKT, LOCKU, LOOKUP, | | |||
| | LOOKUPP, NVERIFY, OPEN, | | | | LOOKUPP, NVERIFY, OPEN, | | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, READ, READDIR, | | | | PUTFH, READ, READDIR, | | |||
| | READLINK, RECLAIM_COMPLETE, | | | | READLINK, RECLAIM_COMPLETE, | | |||
| | REMOVE, RENAME, RESTOREFH, | | | | REMOVE, RENAME, RESTOREFH, | | |||
| | SAVEFH, SECINFO, | | | | SAVEFH, SECINFO, | | |||
| | SECINFO_NO_NAME, SETATTR, | | | | SECINFO_NO_NAME, SETATTR, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_STALE_CLIENTID | CREATE_SESSION, | | | NFS4ERR_STALE_CLIENTID | CREATE_SESSION, | | |||
| | DESTROY_CLIENTID, | | | | DESTROY_CLIENTID, | | |||
| | DESTROY_SESSION | | | | DESTROY_SESSION | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_SYMLINK | COMMIT, LAYOUTCOMMIT, LINK, | | | NFS4ERR_SYMLINK | COMMIT, LAYOUTCOMMIT, LINK, | | |||
| | LOCK, LOCKT, LOOKUP, | | | | LOCK, LOCKT, LOOKUP, | | |||
| | LOOKUPP, OPEN, READ, WRITE | | | | LOOKUPP, OPEN, READ, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_TOOSMALL | CREATE_SESSION, | | | NFS4ERR_TOOSMALL | CREATE_SESSION, | | |||
| | GETDEVICEINFO, LAYOUTGET, | | | | GETDEVICEINFO, LAYOUTGET, | | |||
| | READDIR | | | | READDIR | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_TOO_MANY_OPS | ACCESS, BACKCHANNEL_CTL, | | | NFS4ERR_TOO_MANY_OPS | ACCESS, BACKCHANNEL_CTL, | | |||
| | BIND_CONN_TO_SESSION, | | | | BIND_CONN_TO_SESSION, | | |||
| | CB_GETATTR, CB_LAYOUTRECALL, | | | | CB_GETATTR, CB_LAYOUTRECALL, | | |||
| | CB_NOTIFY, | | | | CB_NOTIFY, | | |||
| | CB_NOTIFY_DEVICEID, | | | | CB_NOTIFY_DEVICEID, | | |||
| | CB_NOTIFY_LOCK, | | | | CB_NOTIFY_LOCK, | | |||
| | CB_PUSH_DELEG, CB_RECALL, | | | | CB_PUSH_DELEG, CB_RECALL, | | |||
| | CB_RECALLABLE_OBJ_AVAIL, | | | | CB_RECALLABLE_OBJ_AVAIL, | | |||
| | CB_RECALL_ANY, | | | | CB_RECALL_ANY, | | |||
| | CB_RECALL_SLOT, CB_SEQUENCE, | | | | CB_RECALL_SLOT, CB_SEQUENCE, | | |||
skipping to change at page 435, line 38 ¶ | skipping to change at line 20329 ¶ | |||
| | OPENATTR, OPEN_DOWNGRADE, | | | | OPENATTR, OPEN_DOWNGRADE, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | READ, READDIR, READLINK, | | | | READ, READDIR, READLINK, | | |||
| | RECLAIM_COMPLETE, REMOVE, | | | | RECLAIM_COMPLETE, REMOVE, | | |||
| | RENAME, RESTOREFH, SAVEFH, | | | | RENAME, RESTOREFH, SAVEFH, | | |||
| | SECINFO, SECINFO_NO_NAME, | | | | SECINFO, SECINFO_NO_NAME, | | |||
| | SEQUENCE, SETATTR, SET_SSV, | | | | SEQUENCE, SETATTR, SET_SSV, | | |||
| | TEST_STATEID, VERIFY, | | | | TEST_STATEID, VERIFY, | | |||
| | WANT_DELEGATION, WRITE | | | | WANT_DELEGATION, WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_UNKNOWN_LAYOUTTYPE | CB_LAYOUTRECALL, | | | NFS4ERR_UNKNOWN_LAYOUTTYPE | CB_LAYOUTRECALL, | | |||
| | GETDEVICEINFO, | | | | GETDEVICEINFO, | | |||
| | GETDEVICELIST, LAYOUTCOMMIT, | | | | GETDEVICELIST, LAYOUTCOMMIT, | | |||
| | LAYOUTGET, LAYOUTRETURN, | | | | LAYOUTGET, LAYOUTRETURN, | | |||
| | NVERIFY, SETATTR, VERIFY | | | | NVERIFY, SETATTR, VERIFY | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_UNSAFE_COMPOUND | CREATE, OPEN, OPENATTR | | | NFS4ERR_UNSAFE_COMPOUND | CREATE, OPEN, OPENATTR | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_WRONGSEC | LINK, LOOKUP, LOOKUPP, OPEN, | | | NFS4ERR_WRONGSEC | LINK, LOOKUP, LOOKUPP, OPEN, | | |||
| | PUTFH, PUTPUBFH, PUTROOTFH, | | | | PUTFH, PUTPUBFH, PUTROOTFH, | | |||
| | RENAME, RESTOREFH | | | | RENAME, RESTOREFH | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_WRONG_CRED | CLOSE, CREATE_SESSION, | | | NFS4ERR_WRONG_CRED | CLOSE, CREATE_SESSION, | | |||
| | DELEGPURGE, DELEGRETURN, | | | | DELEGPURGE, DELEGRETURN, | | |||
| | DESTROY_CLIENTID, | | | | DESTROY_CLIENTID, | | |||
| | DESTROY_SESSION, | | | | DESTROY_SESSION, | | |||
| | FREE_STATEID, LAYOUTCOMMIT, | | | | FREE_STATEID, LAYOUTCOMMIT, | | |||
| | LAYOUTRETURN, LOCK, LOCKT, | | | | LAYOUTRETURN, LOCK, LOCKT, | | |||
| | LOCKU, OPEN_DOWNGRADE, | | | | LOCKU, OPEN_DOWNGRADE, | | |||
| | RECLAIM_COMPLETE | | | | RECLAIM_COMPLETE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_WRONG_TYPE | CB_LAYOUTRECALL, | | | NFS4ERR_WRONG_TYPE | CB_LAYOUTRECALL, | | |||
| | CB_PUSH_DELEG, COMMIT, | | | | CB_PUSH_DELEG, COMMIT, | | |||
| | GETATTR, LAYOUTGET, | | | | GETATTR, LAYOUTGET, | | |||
| | LAYOUTRETURN, LINK, LOCK, | | | | LAYOUTRETURN, LINK, LOCK, | | |||
| | LOCKT, NVERIFY, OPEN, | | | | LOCKT, NVERIFY, OPEN, | | |||
| | OPENATTR, READ, READLINK, | | | | OPENATTR, READ, READLINK, | | |||
| | RECLAIM_COMPLETE, SETATTR, | | | | RECLAIM_COMPLETE, SETATTR, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
| NFS4ERR_XDEV | LINK, RENAME | | | NFS4ERR_XDEV | LINK, RENAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
+-----------------------------------+-------------------------------+ | ||||
Table 14 | Table 14: Errors and the Operations That Use Them | |||
16. NFSv4.1 Procedures | 16. NFSv4.1 Procedures | |||
Both procedures, NULL and COMPOUND, MUST be implemented. | Both procedures, NULL and COMPOUND, MUST be implemented. | |||
16.1. Procedure 0: NULL - No Operation | 16.1. Procedure 0: NULL - No Operation | |||
16.1.1. ARGUMENTS | 16.1.1. ARGUMENTS | |||
void; | void; | |||
skipping to change at page 438, line 34 ¶ | skipping to change at line 20457 ¶ | |||
OP_LAYOUTGET = 50, | OP_LAYOUTGET = 50, | |||
OP_LAYOUTRETURN = 51, | OP_LAYOUTRETURN = 51, | |||
OP_SECINFO_NO_NAME = 52, | OP_SECINFO_NO_NAME = 52, | |||
OP_SEQUENCE = 53, | OP_SEQUENCE = 53, | |||
OP_SET_SSV = 54, | OP_SET_SSV = 54, | |||
OP_TEST_STATEID = 55, | OP_TEST_STATEID = 55, | |||
OP_WANT_DELEGATION = 56, | OP_WANT_DELEGATION = 56, | |||
OP_DESTROY_CLIENTID = 57, | OP_DESTROY_CLIENTID = 57, | |||
OP_RECLAIM_COMPLETE = 58, | OP_RECLAIM_COMPLETE = 58, | |||
OP_ILLEGAL = 10044 | OP_ILLEGAL = 10044 | |||
}; | ||||
union nfs_argop4 switch (nfs_opnum4 argop) { | union nfs_argop4 switch (nfs_opnum4 argop) { | |||
case OP_ACCESS: ACCESS4args opaccess; | case OP_ACCESS: ACCESS4args opaccess; | |||
case OP_CLOSE: CLOSE4args opclose; | case OP_CLOSE: CLOSE4args opclose; | |||
case OP_COMMIT: COMMIT4args opcommit; | case OP_COMMIT: COMMIT4args opcommit; | |||
case OP_CREATE: CREATE4args opcreate; | case OP_CREATE: CREATE4args opcreate; | |||
case OP_DELEGPURGE: DELEGPURGE4args opdelegpurge; | case OP_DELEGPURGE: DELEGPURGE4args opdelegpurge; | |||
case OP_DELEGRETURN: DELEGRETURN4args opdelegreturn; | case OP_DELEGRETURN: DELEGRETURN4args opdelegreturn; | |||
case OP_GETATTR: GETATTR4args opgetattr; | case OP_GETATTR: GETATTR4args opgetattr; | |||
case OP_GETFH: void; | case OP_GETFH: void; | |||
skipping to change at page 447, line 46 ¶ | skipping to change at line 20897 ¶ | |||
Figure 6 | Figure 6 | |||
16.2.4. ERRORS | 16.2.4. ERRORS | |||
COMPOUND will of course return every error that each operation on the | COMPOUND will of course return every error that each operation on the | |||
fore channel can return (see Table 12). However, if COMPOUND returns | fore channel can return (see Table 12). However, if COMPOUND returns | |||
zero operations, obviously the error returned by COMPOUND has nothing | zero operations, obviously the error returned by COMPOUND has nothing | |||
to do with an error returned by an operation. The list of errors | to do with an error returned by an operation. The list of errors | |||
COMPOUND will return if it processes zero operations include: | COMPOUND will return if it processes zero operations include: | |||
COMPOUND Error Returns | ||||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| Error | Notes | | | Error | Notes | | |||
+==============================+==================================+ | +==============================+==================================+ | |||
| NFS4ERR_BADCHAR | The tag argument has a character | | | NFS4ERR_BADCHAR | The tag argument has a character | | |||
| | the replier does not support. | | | | the replier does not support. | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| NFS4ERR_BADXDR | | | | NFS4ERR_BADXDR | | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| NFS4ERR_DELAY | | | | NFS4ERR_DELAY | | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
skipping to change at page 448, line 30 ¶ | skipping to change at line 20923 ¶ | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| NFS4ERR_TOO_MANY_OPS | | | | NFS4ERR_TOO_MANY_OPS | | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| NFS4ERR_REP_TOO_BIG | | | | NFS4ERR_REP_TOO_BIG | | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| NFS4ERR_REP_TOO_BIG_TO_CACHE | | | | NFS4ERR_REP_TOO_BIG_TO_CACHE | | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
| NFS4ERR_REQ_TOO_BIG | | | | NFS4ERR_REQ_TOO_BIG | | | |||
+------------------------------+----------------------------------+ | +------------------------------+----------------------------------+ | |||
Table 15 | Table 15: COMPOUND Error Returns | |||
17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL | 17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL | |||
The following tables summarize the operations of the NFSv4.1 protocol | The following tables summarize the operations of the NFSv4.1 protocol | |||
and the corresponding designation of REQUIRED, RECOMMENDED, and | and the corresponding designation of REQUIRED, RECOMMENDED, and | |||
OPTIONAL to implement or MUST NOT implement. The designation of MUST | OPTIONAL to implement or MUST NOT implement. The designation of MUST | |||
NOT implement is reserved for those operations that were defined in | NOT implement is reserved for those operations that were defined in | |||
NFSv4.0 and MUST NOT be implemented in NFSv4.1. | NFSv4.0 and MUST NOT be implemented in NFSv4.1. | |||
For the most part, the REQUIRED, RECOMMENDED, or OPTIONAL designation | For the most part, the REQUIRED, RECOMMENDED, or OPTIONAL designation | |||
skipping to change at page 449, line 42 ¶ | skipping to change at line 20983 ¶ | |||
The OPTIONAL features identified and their abbreviations are as | The OPTIONAL features identified and their abbreviations are as | |||
follows: | follows: | |||
pNFS Parallel NFS | pNFS Parallel NFS | |||
FDELG File Delegations | FDELG File Delegations | |||
DDELG Directory Delegations | DDELG Directory Delegations | |||
Operations | ||||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
| Operation | REQ, REC, | Feature | Definition | | | Operation | REQ, REC, | Feature | Definition | | |||
| | OPT, or MNI | (REQ, REC, | | | | | OPT, or MNI | (REQ, REC, | | | |||
| | | or OPT) | | | | | | or OPT) | | | |||
+======================+=============+============+===============+ | +======================+=============+============+===============+ | |||
| ACCESS | REQ | | Section 18.1 | | | ACCESS | REQ | | Section 18.1 | | |||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
| BACKCHANNEL_CTL | REQ | | Section 18.33 | | | BACKCHANNEL_CTL | REQ | | Section 18.33 | | |||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
| BIND_CONN_TO_SESSION | REQ | | Section 18.34 | | | BIND_CONN_TO_SESSION | REQ | | Section 18.34 | | |||
skipping to change at page 452, line 25 ¶ | skipping to change at line 21108 ¶ | |||
| TEST_STATEID | REQ | | Section 18.48 | | | TEST_STATEID | REQ | | Section 18.48 | | |||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
| VERIFY | REQ | | Section 18.31 | | | VERIFY | REQ | | Section 18.31 | | |||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
| WANT_DELEGATION | OPT | FDELG | Section 18.49 | | | WANT_DELEGATION | OPT | FDELG | Section 18.49 | | |||
| | | (OPT) | | | | | | (OPT) | | | |||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
| WRITE | REQ | | Section 18.32 | | | WRITE | REQ | | Section 18.32 | | |||
+----------------------+-------------+------------+---------------+ | +----------------------+-------------+------------+---------------+ | |||
Table 16 | Table 16: Operations | |||
Callback Operations | ||||
+-------------------------+-------------+------------+------------+ | +-------------------------+-------------+------------+------------+ | |||
| Operation | REQ, REC, | Feature | Definition | | | Operation | REQ, REC, | Feature | Definition | | |||
| | OPT, or MNI | (REQ, REC, | | | | | OPT, or MNI | (REQ, REC, | | | |||
| | | or OPT) | | | | | | or OPT) | | | |||
+=========================+=============+============+============+ | +=========================+=============+============+============+ | |||
| CB_GETATTR | OPT | FDELG | Section | | | CB_GETATTR | OPT | FDELG | Section | | |||
| | | (REQ) | 20.1 | | | | | (REQ) | 20.1 | | |||
+-------------------------+-------------+------------+------------+ | +-------------------------+-------------+------------+------------+ | |||
| CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section | | | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section | | |||
| | | | 20.3 | | | | | | 20.3 | | |||
skipping to change at page 453, line 50 ¶ | skipping to change at line 21156 ¶ | |||
+-------------------------+-------------+------------+------------+ | +-------------------------+-------------+------------+------------+ | |||
| CB_SEQUENCE | OPT | FDELG, | Section | | | CB_SEQUENCE | OPT | FDELG, | Section | | |||
| | | DDELG, | 20.9 | | | | | DDELG, | 20.9 | | |||
| | | pNFS (REQ) | | | | | | pNFS (REQ) | | | |||
+-------------------------+-------------+------------+------------+ | +-------------------------+-------------+------------+------------+ | |||
| CB_WANTS_CANCELLED | OPT | FDELG, | Section | | | CB_WANTS_CANCELLED | OPT | FDELG, | Section | | |||
| | | DDELG, | 20.10 | | | | | DDELG, | 20.10 | | |||
| | | pNFS (REQ) | | | | | | pNFS (REQ) | | | |||
+-------------------------+-------------+------------+------------+ | +-------------------------+-------------+------------+------------+ | |||
Table 17 | Table 17: Callback Operations | |||
18. NFSv4.1 Operations | 18. NFSv4.1 Operations | |||
18.1. Operation 3: ACCESS - Check Access Rights | 18.1. Operation 3: ACCESS - Check Access Rights | |||
18.1.1. ARGUMENTS | 18.1.1. ARGUMENTS | |||
const ACCESS4_READ = 0x00000001; | const ACCESS4_READ = 0x00000001; | |||
const ACCESS4_LOOKUP = 0x00000002; | const ACCESS4_LOOKUP = 0x00000002; | |||
const ACCESS4_MODIFY = 0x00000004; | const ACCESS4_MODIFY = 0x00000004; | |||
skipping to change at page 485, line 28 ¶ | skipping to change at line 22571 ¶ | |||
/* | /* | |||
* Various definitions for OPEN | * Various definitions for OPEN | |||
*/ | */ | |||
enum createmode4 { | enum createmode4 { | |||
UNCHECKED4 = 0, | UNCHECKED4 = 0, | |||
GUARDED4 = 1, | GUARDED4 = 1, | |||
/* Deprecated in NFSv4.1. */ | /* Deprecated in NFSv4.1. */ | |||
EXCLUSIVE4 = 2, | EXCLUSIVE4 = 2, | |||
/* | /* | |||
* New to NFSv4.1. If session is persistent, | * New to NFSv4.1. If session is persistent, | |||
* GUARDED4 MUST be used. Otherwise, use | * GUARDED4 <bcp14>MUST</bcp14> be used. Otherwise, use | |||
* EXCLUSIVE4_1 instead of EXCLUSIVE4. | * EXCLUSIVE4_1 instead of EXCLUSIVE4. | |||
*/ | */ | |||
EXCLUSIVE4_1 = 3 | EXCLUSIVE4_1 = 3 | |||
}; | }; | |||
struct creatverfattr { | struct creatverfattr { | |||
verifier4 cva_verf; | verifier4 cva_verf; | |||
fattr4 cva_attrs; | fattr4 cva_attrs; | |||
}; | }; | |||
skipping to change at page 493, line 38 ¶ | skipping to change at line 22958 ¶ | |||
attributes the server used to store the verifier. As described in | attributes the server used to store the verifier. As described in | |||
Section 18.16.4, the client can compare cva_attrs.attrmask with | Section 18.16.4, the client can compare cva_attrs.attrmask with | |||
attrset to determine which attributes were used to store the | attrset to determine which attributes were used to store the | |||
verifier. | verifier. | |||
With the addition of persistent sessions and pNFS, under some | With the addition of persistent sessions and pNFS, under some | |||
conditions EXCLUSIVE4 MUST NOT be used by the client or supported by | conditions EXCLUSIVE4 MUST NOT be used by the client or supported by | |||
the server. The following table summarizes the appropriate and | the server. The following table summarizes the appropriate and | |||
mandated exclusive create methods for implementations of NFSv4.1: | mandated exclusive create methods for implementations of NFSv4.1: | |||
Required methods for exclusive create | ||||
+-------------+----------+--------------+-----------------------+ | +-------------+----------+--------------+-----------------------+ | |||
| Persistent | Server | Server | Client Allowed | | | Persistent | Server | Server | Client Allowed | | |||
| Reply Cache | Supports | REQUIRED | | | | Reply Cache | Supports | REQUIRED | | | |||
| Enabled | pNFS | | | | | Enabled | pNFS | | | | |||
+=============+==========+==============+=======================+ | +=============+==========+==============+=======================+ | |||
| no | no | EXCLUSIVE4_1 | EXCLUSIVE4_1 (SHOULD) | | | no | no | EXCLUSIVE4_1 | EXCLUSIVE4_1 (SHOULD) | | |||
| | | and | or EXCLUSIVE4 (SHOULD | | | | | and | or EXCLUSIVE4 (SHOULD | | |||
| | | EXCLUSIVE4 | NOT) | | | | | EXCLUSIVE4 | NOT) | | |||
+-------------+----------+--------------+-----------------------+ | +-------------+----------+--------------+-----------------------+ | |||
| no | yes | EXCLUSIVE4_1 | EXCLUSIVE4_1 | | | no | yes | EXCLUSIVE4_1 | EXCLUSIVE4_1 | | |||
+-------------+----------+--------------+-----------------------+ | +-------------+----------+--------------+-----------------------+ | |||
| yes | no | GUARDED4 | GUARDED4 | | | yes | no | GUARDED4 | GUARDED4 | | |||
+-------------+----------+--------------+-----------------------+ | +-------------+----------+--------------+-----------------------+ | |||
| yes | yes | GUARDED4 | GUARDED4 | | | yes | yes | GUARDED4 | GUARDED4 | | |||
+-------------+----------+--------------+-----------------------+ | +-------------+----------+--------------+-----------------------+ | |||
Table 18 | Table 18: Required Methods for Exclusive Create | |||
If CREATE_SESSION4_FLAG_PERSIST is set in the results of | If CREATE_SESSION4_FLAG_PERSIST is set in the results of | |||
CREATE_SESSION, the reply cache is persistent (see Section 18.36). | CREATE_SESSION, the reply cache is persistent (see Section 18.36). | |||
If the EXCHGID4_FLAG_USE_PNFS_MDS flag is set in the results from | If the EXCHGID4_FLAG_USE_PNFS_MDS flag is set in the results from | |||
EXCHANGE_ID, the server is a pNFS server (see Section 18.35). If the | EXCHANGE_ID, the server is a pNFS server (see Section 18.35). If the | |||
client attempts to use EXCLUSIVE4 on a persistent session, or a | client attempts to use EXCLUSIVE4 on a persistent session, or a | |||
session derived from an EXCHGID4_FLAG_USE_PNFS_MDS client ID, the | session derived from an EXCHGID4_FLAG_USE_PNFS_MDS client ID, the | |||
server MUST return NFS4ERR_INVAL. | server MUST return NFS4ERR_INVAL. | |||
With persistent sessions, exclusive create semantics are fully | With persistent sessions, exclusive create semantics are fully | |||
skipping to change at page 496, line 49 ¶ | skipping to change at line 23068 ¶ | |||
| | used after the client restarts. The | | | | used after the client restarts. The | | |||
| | server MAY support CLAIM_DELEGATE_PREV | | | | server MAY support CLAIM_DELEGATE_PREV | | |||
| | and/or CLAIM_DELEG_PREV_FH (new to | | | | and/or CLAIM_DELEG_PREV_FH (new to | | |||
| | NFSv4.1). If it does support either | | | | NFSv4.1). If it does support either | | |||
| | claim type, CREATE_SESSION MUST NOT | | | | claim type, CREATE_SESSION MUST NOT | | |||
| | remove the client's delegation state, | | | | remove the client's delegation state, | | |||
| | and the server MUST support the | | | | and the server MUST support the | | |||
| | DELEGPURGE operation. | | | | DELEGPURGE operation. | | |||
+----------------------+--------------------------------------------+ | +----------------------+--------------------------------------------+ | |||
Table 19 | Table 19: Claim Types | |||
For OPEN requests that reach the server during the grace period, the | For OPEN requests that reach the server during the grace period, the | |||
server returns an error of NFS4ERR_GRACE. The following claim types | server returns an error of NFS4ERR_GRACE. The following claim types | |||
are exceptions: | are exceptions: | |||
* OPEN requests specifying the claim type CLAIM_PREVIOUS are devoted | * OPEN requests specifying the claim type CLAIM_PREVIOUS are devoted | |||
to reclaiming opens after a server restart and are typically only | to reclaiming opens after a server restart and are typically only | |||
valid during the grace period. | valid during the grace period. | |||
* OPEN requests specifying the claim types CLAIM_DELEGATE_CUR and | * OPEN requests specifying the claim types CLAIM_DELEGATE_CUR and | |||
skipping to change at page 499, line 31 ¶ | skipping to change at line 23193 ¶ | |||
Otherwise, the client is neither indicating a desire nor a non-desire | Otherwise, the client is neither indicating a desire nor a non-desire | |||
for a delegation, and the server MAY or MAY not return a delegation | for a delegation, and the server MAY or MAY not return a delegation | |||
in the OPEN response. | in the OPEN response. | |||
If the server supports the new _WANT_ flags and the client sends one | If the server supports the new _WANT_ flags and the client sends one | |||
or more of the new flags, then in the event the server does not | or more of the new flags, then in the event the server does not | |||
return a delegation, it MUST return a delegation type of | return a delegation, it MUST return a delegation type of | |||
OPEN_DELEGATE_NONE_EXT. The field ond_why in the reply indicates why | OPEN_DELEGATE_NONE_EXT. The field ond_why in the reply indicates why | |||
no delegation was returned and will be one of: | no delegation was returned and will be one of: | |||
WND4_NOT_WANTED The client specified | WND4_NOT_WANTED | |||
OPEN4_SHARE_ACCESS_WANT_NO_DELEG. | The client specified OPEN4_SHARE_ACCESS_WANT_NO_DELEG. | |||
WND4_CONTENTION There is a conflicting delegation or open on the | WND4_CONTENTION | |||
file. | There is a conflicting delegation or open on the file. | |||
WND4_RESOURCE Resource limitations prevent the server from granting | WND4_RESOURCE | |||
a delegation. | Resource limitations prevent the server from granting a | |||
delegation. | ||||
WND4_NOT_SUPP_FTYPE The server does not support delegations on this | WND4_NOT_SUPP_FTYPE | |||
file type. | The server does not support delegations on this file type. | |||
WND4_WRITE_DELEG_NOT_SUPP_FTYPE The server does not support | WND4_WRITE_DELEG_NOT_SUPP_FTYPE | |||
OPEN_DELEGATE_WRITE delegations on this file type. | The server does not support OPEN_DELEGATE_WRITE delegations on | |||
this file type. | ||||
WND4_NOT_SUPP_UPGRADE The server does not support atomic upgrade of | WND4_NOT_SUPP_UPGRADE | |||
an OPEN_DELEGATE_READ delegation to an OPEN_DELEGATE_WRITE | The server does not support atomic upgrade of an | |||
OPEN_DELEGATE_READ delegation to an OPEN_DELEGATE_WRITE | ||||
delegation. | delegation. | |||
WND4_NOT_SUPP_DOWNGRADE The server does not support atomic downgrade | WND4_NOT_SUPP_DOWNGRADE | |||
of an OPEN_DELEGATE_WRITE delegation to an OPEN_DELEGATE_READ | The server does not support atomic downgrade of an | |||
OPEN_DELEGATE_WRITE delegation to an OPEN_DELEGATE_READ | ||||
delegation. | delegation. | |||
WND4_CANCELED The client specified OPEN4_SHARE_ACCESS_WANT_CANCEL | WND4_CANCELED | |||
and now any "want" for this file object is cancelled. | The client specified OPEN4_SHARE_ACCESS_WANT_CANCEL and now any | |||
"want" for this file object is cancelled. | ||||
WND4_IS_DIR The specified file object is a directory, and the | WND4_IS_DIR | |||
operation is OPEN or WANT_DELEGATION, which do not support | The specified file object is a directory, and the operation is | |||
delegations on directories. | OPEN or WANT_DELEGATION, which do not support delegations on | |||
directories. | ||||
OPEN4_SHARE_ACCESS_WANT_READ_DELEG, | OPEN4_SHARE_ACCESS_WANT_READ_DELEG, | |||
OPEN_SHARE_ACCESS_WANT_WRITE_DELEG, or | OPEN_SHARE_ACCESS_WANT_WRITE_DELEG, or | |||
OPEN_SHARE_ACCESS_WANT_ANY_DELEG mean, respectively, the client wants | OPEN_SHARE_ACCESS_WANT_ANY_DELEG mean, respectively, the client wants | |||
an OPEN_DELEGATE_READ, OPEN_DELEGATE_WRITE, or any delegation | an OPEN_DELEGATE_READ, OPEN_DELEGATE_WRITE, or any delegation | |||
regardless which of OPEN4_SHARE_ACCESS_READ, | regardless which of OPEN4_SHARE_ACCESS_READ, | |||
OPEN4_SHARE_ACCESS_WRITE, or OPEN4_SHARE_ACCESS_BOTH is set. If the | OPEN4_SHARE_ACCESS_WRITE, or OPEN4_SHARE_ACCESS_BOTH is set. If the | |||
client has an OPEN_DELEGATE_READ delegation on a file and requests an | client has an OPEN_DELEGATE_READ delegation on a file and requests an | |||
OPEN_DELEGATE_WRITE delegation, then the client is requesting atomic | OPEN_DELEGATE_WRITE delegation, then the client is requesting atomic | |||
upgrade of its OPEN_DELEGATE_READ delegation to an | upgrade of its OPEN_DELEGATE_READ delegation to an | |||
skipping to change at page 550, line 12 ¶ | skipping to change at line 25509 ¶ | |||
least as long as the length of the HMAC's hash algorithm's | least as long as the length of the HMAC's hash algorithm's | |||
output (see Section 3 of [51]). | output (see Section 3 of [51]). | |||
o key length SHOULD be <= SSV length. This is a transitive | o key length SHOULD be <= SSV length. This is a transitive | |||
result of the above two invariants. | result of the above two invariants. | |||
o key length SHOULD be >= hash length / 2. This is because | o key length SHOULD be >= hash length / 2. This is because | |||
the subkey derivation is via an HMAC and it is recommended | the subkey derivation is via an HMAC and it is recommended | |||
that if the HMAC has to be truncated, it should not be | that if the HMAC has to be truncated, it should not be | |||
truncated to less than half the hash length (see Section 4 | truncated to less than half the hash length (see Section 4 | |||
of RFC2104 [51]). | of [51]. | |||
- Number of concurrent versions of the SSV the client and server | - Number of concurrent versions of the SSV the client and server | |||
will support (see Section 2.10.9). This property is | will support (see Section 2.10.9). This property is | |||
represented by spi_window in the EXCHANGE_ID results. The | represented by spi_window in the EXCHANGE_ID results. The | |||
property may be updated by subsequent EXCHANGE_ID operations. | property may be updated by subsequent EXCHANGE_ID operations. | |||
* The client's implementation ID as represented by the | * The client's implementation ID as represented by the | |||
eia_client_impl_id field of the arguments. The property may be | eia_client_impl_id field of the arguments. The property may be | |||
updated by subsequent EXCHANGE_ID requests. | updated by subsequent EXCHANGE_ID requests. | |||
skipping to change at page 551, line 5 ¶ | skipping to change at line 25551 ¶ | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set in eia_flags, this means | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set in eia_flags, this means | |||
that the client is attempting to update properties of an existing | that the client is attempting to update properties of an existing | |||
confirmed client ID (if the client wants to update properties of an | confirmed client ID (if the client wants to update properties of an | |||
unconfirmed client ID, it MUST NOT set | unconfirmed client ID, it MUST NOT set | |||
EXCHGID4_FLAG_UPD_CONFIRMED_REC_A). If so, it is RECOMMENDED that | EXCHGID4_FLAG_UPD_CONFIRMED_REC_A). If so, it is RECOMMENDED that | |||
the client send the update EXCHANGE_ID operation in the same COMPOUND | the client send the update EXCHANGE_ID operation in the same COMPOUND | |||
as a SEQUENCE so that the EXCHANGE_ID is executed exactly once. | as a SEQUENCE so that the EXCHANGE_ID is executed exactly once. | |||
Whether the client can update the properties of client ID depends on | Whether the client can update the properties of client ID depends on | |||
the state protection it selected when the client ID was created, and | the state protection it selected when the client ID was created, and | |||
the principal and security flavor it used when sending the | the principal and security flavor it used when sending the | |||
EXCHANGE_ID operation. The situations described in items 6, 7, 8, or | EXCHANGE_ID operation. The situations described in items 7, 8, 9, or | |||
9 of the second numbered list of Section 18.35.4 below will apply. | 10 of the second numbered list of Section 18.35.4 below will apply. | |||
Note that if the operation succeeds and returns a client ID that is | Note that if the operation succeeds and returns a client ID that is | |||
already confirmed, the server MUST set the EXCHGID4_FLAG_CONFIRMED_R | already confirmed, the server MUST set the EXCHGID4_FLAG_CONFIRMED_R | |||
bit in eir_flags. | bit in eir_flags. | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set in eia_flags, this | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set in eia_flags, this | |||
means that the client is trying to establish a new client ID; it is | means that the client is trying to establish a new client ID; it is | |||
attempting to trunk data communication to the server (See | attempting to trunk data communication to the server (See | |||
Section 2.10.5); or it is attempting to update properties of an | Section 2.10.5); or it is attempting to update properties of an | |||
unconfirmed client ID. The situations described in items 1, 2, 3, 4, | unconfirmed client ID. The situations described in items 1, 2, 3, 5, | |||
or 5 of the second numbered list of Section 18.35.4 below will apply. | or 6 of the second numbered list of Section 18.35.4 below will apply. | |||
Note that if the operation succeeds and returns a client ID that was | Note that if the operation succeeds and returns a client ID that was | |||
previously confirmed, the server MUST set the | previously confirmed, the server MUST set the | |||
EXCHGID4_FLAG_CONFIRMED_R bit in eir_flags. | EXCHGID4_FLAG_CONFIRMED_R bit in eir_flags. | |||
When the EXCHGID4_FLAG_SUPP_MOVED_REFER flag bit is set, the client | When the EXCHGID4_FLAG_SUPP_MOVED_REFER flag bit is set, the client | |||
indicates that it is capable of dealing with an NFS4ERR_MOVED error | indicates that it is capable of dealing with an NFS4ERR_MOVED error | |||
as part of a referral sequence. When this bit is not set, it is | as part of a referral sequence. When this bit is not set, it is | |||
still legal for the server to perform a referral sequence. However, | still legal for the server to perform a referral sequence. However, | |||
a server may use the fact that the client is incapable of correctly | a server may use the fact that the client is incapable of correctly | |||
responding to a referral, by avoiding it for that particular client. | responding to a referral, by avoiding it for that particular client. | |||
skipping to change at page 556, line 10 ¶ | skipping to change at line 25792 ¶ | |||
connections connected to a server that returns the same the | connections connected to a server that returns the same the | |||
eir_server_owner.so_major_id and eir_server_owner.so_minor_id on | eir_server_owner.so_major_id and eir_server_owner.so_minor_id on | |||
each connection. It is permissible for the client to set | each connection. It is permissible for the client to set | |||
ssp_num_gss_handles to zero; the client can create more handles | ssp_num_gss_handles to zero; the client can create more handles | |||
with another EXCHANGE_ID call. | with another EXCHANGE_ID call. | |||
Because each SSV RPCSEC_GSS handle shares a common SSV GSS | Because each SSV RPCSEC_GSS handle shares a common SSV GSS | |||
context, there are security considerations specific to this | context, there are security considerations specific to this | |||
situation discussed in Section 2.10.10. | situation discussed in Section 2.10.10. | |||
The seq_window (see Section 5.2.3.1 of RFC2203 [4]) of each | The seq_window (see Section 5.2.3.1 of [4]) of each RPCSEC_GSS | |||
RPCSEC_GSS handle in spi_handle MUST be the same as the seq_window | handle in spi_handle MUST be the same as the seq_window of the | |||
of the RPCSEC_GSS handle used for the credential of the RPC | RPCSEC_GSS handle used for the credential of the RPC request that | |||
request that the EXCHANGE_ID operation was sent as a part of. | the EXCHANGE_ID operation was sent as a part of. | |||
+----------------------+---------------------------+---------------+ | +----------------------+---------------------------+---------------+ | |||
| Encryption Algorithm | MUST NOT be combined with | SHOULD NOT be | | | Encryption Algorithm | MUST NOT be combined with | SHOULD NOT be | | |||
| | | combined with | | | | | combined with | | |||
+======================+===========================+===============+ | +======================+===========================+===============+ | |||
| id-aes128-CBC | | id-sha384, | | | id-aes128-CBC | | id-sha384, | | |||
| | | id-sha512 | | | | | id-sha512 | | |||
+----------------------+---------------------------+---------------+ | +----------------------+---------------------------+---------------+ | |||
| id-aes192-CBC | id-sha1 | id-sha512 | | | id-aes192-CBC | id-sha1 | id-sha512 | | |||
+----------------------+---------------------------+---------------+ | +----------------------+---------------------------+---------------+ | |||
skipping to change at page 557, line 12 ¶ | skipping to change at line 25842 ¶ | |||
Because it is possible that some implementations might violate the | Because it is possible that some implementations might violate the | |||
protocol specification and interpret the identity information, | protocol specification and interpret the identity information, | |||
implementations MUST provide facilities to allow the NFSv4 client and | implementations MUST provide facilities to allow the NFSv4 client and | |||
server be configured to set the contents of the nfs_impl_id | server be configured to set the contents of the nfs_impl_id | |||
structures sent to any specified value. | structures sent to any specified value. | |||
18.35.4. IMPLEMENTATION | 18.35.4. IMPLEMENTATION | |||
A server's client record is a 5-tuple: | A server's client record is a 5-tuple: | |||
1. co_ownerid | 1. co_ownerid: | |||
The client identifier string, from the eia_clientowner | The client identifier string, from the eia_clientowner structure | |||
structure of the EXCHANGE_ID4args structure. | of the EXCHANGE_ID4args structure. | |||
2. co_verifier: | 2. co_verifier: | |||
A client-specific value used to indicate incarnations (where a | A client-specific value used to indicate incarnations (where a | |||
client restart represents a new incarnation), from the | client restart represents a new incarnation), from the | |||
eia_clientowner structure of the EXCHANGE_ID4args structure. | eia_clientowner structure of the EXCHANGE_ID4args structure. | |||
3. principal: | 3. principal: | |||
The principal that was defined in the RPC header's credential | The principal that was defined in the RPC header's credential | |||
and/or verifier at the time the client record was established. | and/or verifier at the time the client record was established. | |||
4. client ID: | 4. client ID: | |||
The shorthand client identifier, generated by the server and | The shorthand client identifier, generated by the server and | |||
returned via the eir_clientid field in the EXCHANGE_ID4resok | returned via the eir_clientid field in the EXCHANGE_ID4resok | |||
structure. | structure. | |||
5. confirmed: | 5. confirmed: | |||
A private field on the server indicating whether or not a | A private field on the server indicating whether or not a client | |||
client record has been confirmed. A client record is | record has been confirmed. A client record is confirmed if there | |||
confirmed if there has been a successful CREATE_SESSION | has been a successful CREATE_SESSION operation to confirm it. | |||
operation to confirm it. Otherwise, it is unconfirmed. An | Otherwise, it is unconfirmed. An unconfirmed record is | |||
unconfirmed record is established by an EXCHANGE_ID call. Any | established by an EXCHANGE_ID call. Any unconfirmed record that | |||
unconfirmed record that is not confirmed within a lease period | is not confirmed within a lease period SHOULD be removed. | |||
SHOULD be removed. | ||||
The following identifiers represent special values for the fields in | The following identifiers represent special values for the fields in | |||
the records. | the records. | |||
ownerid_arg: | ownerid_arg: | |||
The value of the eia_clientowner.co_ownerid subfield of the | The value of the eia_clientowner.co_ownerid subfield of the | |||
EXCHANGE_ID4args structure of the current request. | EXCHANGE_ID4args structure of the current request. | |||
verifier_arg: | verifier_arg: | |||
The value of the eia_clientowner.co_verifier subfield of the | The value of the eia_clientowner.co_verifier subfield of the | |||
EXCHANGE_ID4args structure of the current request. | EXCHANGE_ID4args structure of the current request. | |||
old_verifier_arg: | old_verifier_arg: | |||
A value of the eia_clientowner.co_verifier field of a client | A value of the eia_clientowner.co_verifier field of a client | |||
record received in a previous request; this is distinct from | record received in a previous request; this is distinct from | |||
verifier_arg. | verifier_arg. | |||
principal_arg: | principal_arg: | |||
The value of the RPCSEC_GSS principal for the current request. | The value of the RPCSEC_GSS principal for the current request. | |||
old_principal_arg: | old_principal_arg: | |||
A value of the principal of a client record as defined by the RPC | A value of the principal of a client record as defined by the RPC | |||
header's credential or verifier of a previous request. This is | header's credential or verifier of a previous request. This is | |||
distinct from principal_arg. | distinct from principal_arg. | |||
clientid_ret: | clientid_ret: | |||
The value of the eir_clientid field the server will return in the | The value of the eir_clientid field the server will return in the | |||
EXCHANGE_ID4resok structure for the current request. | EXCHANGE_ID4resok structure for the current request. | |||
old_clientid_ret: | old_clientid_ret: | |||
The value of the eir_clientid field the server returned in the | The value of the eir_clientid field the server returned in the | |||
EXCHANGE_ID4resok structure for a previous request. This is | EXCHANGE_ID4resok structure for a previous request. This is | |||
distinct from clientid_ret. | distinct from clientid_ret. | |||
confirmed: | confirmed: | |||
The client ID has been confirmed. | The client ID has been confirmed. | |||
unconfirmed: | unconfirmed: | |||
The client ID has not been confirmed. | The client ID has not been confirmed. | |||
Since EXCHANGE_ID is a non-idempotent operation, we must consider the | Since EXCHANGE_ID is a non-idempotent operation, we must consider the | |||
possibility that retries occur as a result of a client restart, | possibility that retries occur as a result of a client restart, | |||
network partition, malfunctioning router, etc. Retries are | network partition, malfunctioning router, etc. Retries are | |||
identified by the value of the eia_clientowner field of | identified by the value of the eia_clientowner field of | |||
EXCHANGE_ID4args, and the method for dealing with them is outlined in | EXCHANGE_ID4args, and the method for dealing with them is outlined in | |||
the scenarios below. | the scenarios below. | |||
The scenarios are described in terms of the client record(s) a server | The scenarios are described in terms of the client record(s) a server | |||
skipping to change at page 559, line 12 ¶ | skipping to change at line 25926 ¶ | |||
EXCHANGE_ID4args, and the method for dealing with them is outlined in | EXCHANGE_ID4args, and the method for dealing with them is outlined in | |||
the scenarios below. | the scenarios below. | |||
The scenarios are described in terms of the client record(s) a server | The scenarios are described in terms of the client record(s) a server | |||
has for a given co_ownerid. Note that if the client ID was created | has for a given co_ownerid. Note that if the client ID was created | |||
specifying SP4_SSV state protection and EXCHANGE_ID as the one of the | specifying SP4_SSV state protection and EXCHANGE_ID as the one of the | |||
operations in spo_must_allow, then the server MUST authorize | operations in spo_must_allow, then the server MUST authorize | |||
EXCHANGE_IDs with the SSV principal in addition to the principal that | EXCHANGE_IDs with the SSV principal in addition to the principal that | |||
created the client ID. | created the client ID. | |||
1. New Owner ID | 1. New Owner ID | |||
If the server has no client records with | If the server has no client records with | |||
eia_clientowner.co_ownerid matching ownerid_arg, and | eia_clientowner.co_ownerid matching ownerid_arg, and | |||
EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set in the | EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set in the EXCHANGE_ID, | |||
EXCHANGE_ID, then a new shorthand client ID (let us call it | then a new shorthand client ID (let us call it clientid_ret) is | |||
clientid_ret) is generated, and the following unconfirmed | generated, and the following unconfirmed record is added to the | |||
record is added to the server's state. | server's state. | |||
{ ownerid_arg, verifier_arg, principal_arg, clientid_ret, | { ownerid_arg, verifier_arg, principal_arg, clientid_ret, | |||
unconfirmed } | unconfirmed } | |||
Subsequently, the server returns clientid_ret. | Subsequently, the server returns clientid_ret. | |||
2. Non-Update on Existing Client ID | 2. Non-Update on Existing Client ID | |||
If the server has the following confirmed record, and the | If the server has the following confirmed record, and the | |||
request does not have EXCHGID4_FLAG_UPD_CONFIRMED_REC_A set, | request does not have EXCHGID4_FLAG_UPD_CONFIRMED_REC_A set, | |||
then the request is the result of a retried request due to a | then the request is the result of a retried request due to a | |||
faulty router or lost connection, or the client is trying to | faulty router or lost connection, or the client is trying to | |||
determine if it can perform trunking. | determine if it can perform trunking. | |||
{ ownerid_arg, verifier_arg, principal_arg, clientid_ret, | { ownerid_arg, verifier_arg, principal_arg, clientid_ret, | |||
confirmed } | confirmed } | |||
Since the record has been confirmed, the client must have | Since the record has been confirmed, the client must have | |||
received the server's reply from the initial EXCHANGE_ID | received the server's reply from the initial EXCHANGE_ID | |||
request. Since the server has a confirmed record, and since | request. Since the server has a confirmed record, and since | |||
EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set, with the | EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set, with the possible | |||
possible exception of eir_server_owner.so_minor_id, the server | exception of eir_server_owner.so_minor_id, the server returns | |||
returns the same result it did when the client ID's properties | the same result it did when the client ID's properties were last | |||
were last updated (or if never updated, the result when the | updated (or if never updated, the result when the client ID was | |||
client ID was created). The confirmed record is unchanged. | created). The confirmed record is unchanged. | |||
3. Client Collision | 3. Client Collision | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set, and if the | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set, and if the | |||
server has the following confirmed record, then this request | server has the following confirmed record, then this request is | |||
is likely the result of a chance collision between the values | likely the result of a chance collision between the values of | |||
of the eia_clientowner.co_ownerid subfield of EXCHANGE_ID4args | the eia_clientowner.co_ownerid subfield of EXCHANGE_ID4args for | |||
for two different clients. | two different clients. | |||
{ ownerid_arg, *, old_principal_arg, old_clientid_ret, | { ownerid_arg, *, old_principal_arg, old_clientid_ret, confirmed | |||
confirmed } | } | |||
If there is currently no state associated with | If there is currently no state associated with old_clientid_ret, | |||
old_clientid_ret, or if there is state but the lease has | or if there is state but the lease has expired, then this case | |||
expired, then this case is effectively equivalent to the New | is effectively equivalent to the New Owner ID case of | |||
Owner ID case of Section 18.35.4, Paragraph 7, Item 1. The | Section 18.35.4, Paragraph 7, Item 1. The confirmed record is | |||
confirmed record is deleted, the old_clientid_ret and its lock | deleted, the old_clientid_ret and its lock state are deleted, a | |||
state are deleted, a new shorthand client ID is generated, and | new shorthand client ID is generated, and the following | |||
the following unconfirmed record is added to the server's | unconfirmed record is added to the server's state. | |||
state. | ||||
{ ownerid_arg, verifier_arg, principal_arg, clientid_ret, | { ownerid_arg, verifier_arg, principal_arg, clientid_ret, | |||
unconfirmed } | unconfirmed } | |||
Subsequently, the server returns clientid_ret. | Subsequently, the server returns clientid_ret. | |||
If old_clientid_ret has an unexpired lease with state, then no | 4. If old_clientid_ret has an unexpired lease with state, then no | |||
state of old_clientid_ret is changed or deleted. The server | state of old_clientid_ret is changed or deleted. The server | |||
returns NFS4ERR_CLID_INUSE to indicate that the client should | returns NFS4ERR_CLID_INUSE to indicate that the client should | |||
retry with a different value for the | retry with a different value for the eia_clientowner.co_ownerid | |||
eia_clientowner.co_ownerid subfield of EXCHANGE_ID4args. The | subfield of EXCHANGE_ID4args. The client record is not changed. | |||
client record is not changed. | ||||
4. Replacement of Unconfirmed Record | 5. Replacement of Unconfirmed Record | |||
If the EXCHGID4_FLAG_UPD_CONFIRMED_REC_A flag is not set, and | If the EXCHGID4_FLAG_UPD_CONFIRMED_REC_A flag is not set, and | |||
the server has the following unconfirmed record, then the | the server has the following unconfirmed record, then the client | |||
client is attempting EXCHANGE_ID again on an unconfirmed | is attempting EXCHANGE_ID again on an unconfirmed client ID, | |||
client ID, perhaps due to a retry, a client restart before | perhaps due to a retry, a client restart before client ID | |||
client ID confirmation (i.e., before CREATE_SESSION was | confirmation (i.e., before CREATE_SESSION was called), or some | |||
called), or some other reason. | other reason. | |||
{ ownerid_arg, *, *, old_clientid_ret, unconfirmed } | { ownerid_arg, *, *, old_clientid_ret, unconfirmed } | |||
It is possible that the properties of old_clientid_ret are | It is possible that the properties of old_clientid_ret are | |||
different than those specified in the current EXCHANGE_ID. | different than those specified in the current EXCHANGE_ID. | |||
Whether or not the properties are being updated, to eliminate | Whether or not the properties are being updated, to eliminate | |||
ambiguity, the server deletes the unconfirmed record, | ambiguity, the server deletes the unconfirmed record, generates | |||
generates a new client ID (clientid_ret), and establishes the | a new client ID (clientid_ret), and establishes the following | |||
following unconfirmed record: | unconfirmed record: | |||
{ ownerid_arg, verifier_arg, principal_arg, clientid_ret, | { ownerid_arg, verifier_arg, principal_arg, clientid_ret, | |||
unconfirmed } | unconfirmed } | |||
5. Client Restart | 6. Client Restart | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set, and if the | ||||
server has the following confirmed client record, then this | ||||
request is likely from a previously confirmed client that has | ||||
restarted. | ||||
{ ownerid_arg, old_verifier_arg, principal_arg, | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is not set, and if the | |||
old_clientid_ret, confirmed } | server has the following confirmed client record, then this | |||
request is likely from a previously confirmed client that has | ||||
restarted. | ||||
Since the previous incarnation of the same client will no | { ownerid_arg, old_verifier_arg, principal_arg, | |||
longer be making requests, once the new client ID is confirmed | old_clientid_ret, confirmed } | |||
by CREATE_SESSION, byte-range locks and share reservations | ||||
should be released immediately rather than forcing the new | ||||
incarnation to wait for the lease time on the previous | ||||
incarnation to expire. Furthermore, session state should be | ||||
removed since if the client had maintained that information | ||||
across restart, this request would not have been sent. If the | ||||
server supports neither the CLAIM_DELEGATE_PREV nor | ||||
CLAIM_DELEG_PREV_FH claim types, associated delegations should | ||||
be purged as well; otherwise, delegations are retained and | ||||
recovery proceeds according to Section 10.2.1. | ||||
After processing, clientid_ret is returned to the client and | Since the previous incarnation of the same client will no longer | |||
this client record is added: | be making requests, once the new client ID is confirmed by | |||
CREATE_SESSION, byte-range locks and share reservations should | ||||
be released immediately rather than forcing the new incarnation | ||||
to wait for the lease time on the previous incarnation to | ||||
expire. Furthermore, session state should be removed since if | ||||
the client had maintained that information across restart, this | ||||
request would not have been sent. If the server supports | ||||
neither the CLAIM_DELEGATE_PREV nor CLAIM_DELEG_PREV_FH claim | ||||
types, associated delegations should be purged as well; | ||||
otherwise, delegations are retained and recovery proceeds | ||||
according to Section 10.2.1. | ||||
{ ownerid_arg, verifier_arg, principal_arg, clientid_ret, | After processing, clientid_ret is returned to the client and | |||
unconfirmed } | this client record is added: | |||
The previously described confirmed record continues to exist, | { ownerid_arg, verifier_arg, principal_arg, clientid_ret, | |||
and thus the same ownerid_arg exists in both a confirmed and | unconfirmed } | |||
unconfirmed state at the same time. The number of states can | ||||
collapse to one once the server receives an applicable | ||||
CREATE_SESSION or EXCHANGE_ID. | ||||
- If the server subsequently receives a successful | The previously described confirmed record continues to exist, | |||
CREATE_SESSION that confirms clientid_ret, then the server | and thus the same ownerid_arg exists in both a confirmed and | |||
atomically destroys the confirmed record and makes the | unconfirmed state at the same time. The number of states can | |||
unconfirmed record confirmed as described in | collapse to one once the server receives an applicable | |||
Section 18.36.3. | CREATE_SESSION or EXCHANGE_ID. | |||
- If the server instead subsequently receives an EXCHANGE_ID | * If the server subsequently receives a successful | |||
with the client owner equal to ownerid_arg, one strategy is | CREATE_SESSION that confirms clientid_ret, then the server | |||
to simply delete the unconfirmed record, and process the | atomically destroys the confirmed record and makes the | |||
EXCHANGE_ID as described in the entirety of | unconfirmed record confirmed as described in Section 18.36.3. | |||
Section 18.35.4. | ||||
6. Update | * If the server instead subsequently receives an EXCHANGE_ID | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server | with the client owner equal to ownerid_arg, one strategy is | |||
has the following confirmed record, then this request is an | to simply delete the unconfirmed record, and process the | |||
attempt at an update. | EXCHANGE_ID as described in the entirety of Section 18.35.4. | |||
{ ownerid_arg, verifier_arg, principal_arg, clientid_ret, | 7. Update | |||
confirmed } | ||||
Since the record has been confirmed, the client must have | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server has | |||
received the server's reply from the initial EXCHANGE_ID | the following confirmed record, then this request is an attempt | |||
request. The server allows the update, and the client record | at an update. | |||
is left intact. | ||||
7. Update but No Confirmed Record | { ownerid_arg, verifier_arg, principal_arg, clientid_ret, | |||
confirmed } | ||||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server | Since the record has been confirmed, the client must have | |||
has no confirmed record corresponding ownerid_arg, then the | received the server's reply from the initial EXCHANGE_ID | |||
server returns NFS4ERR_NOENT and leaves any unconfirmed record | request. The server allows the update, and the client record is | |||
intact. | left intact. | |||
8. Update but Wrong Verifier | 8. Update but No Confirmed Record | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server has | |||
has the following confirmed record, then this request is an | no confirmed record corresponding ownerid_arg, then the server | |||
illegal attempt at an update, perhaps because of a retry from | returns NFS4ERR_NOENT and leaves any unconfirmed record intact. | |||
a previous client incarnation. | ||||
{ ownerid_arg, old_verifier_arg, *, clientid_ret, confirmed } | 9. Update but Wrong Verifier | |||
The server returns NFS4ERR_NOT_SAME and leaves the client | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server has | |||
record intact. | the following confirmed record, then this request is an illegal | |||
attempt at an update, perhaps because of a retry from a previous | ||||
client incarnation. | ||||
9. Update but Wrong Principal | { ownerid_arg, old_verifier_arg, *, clientid_ret, confirmed } | |||
If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server | The server returns NFS4ERR_NOT_SAME and leaves the client record | |||
has the following confirmed record, then this request is an | intact. | |||
illegal attempt at an update by an unauthorized principal. | ||||
{ ownerid_arg, verifier_arg, old_principal_arg, clientid_ret, | 10. Update but Wrong Principal | |||
confirmed } | ||||
The server returns NFS4ERR_PERM and leaves the client record | If EXCHGID4_FLAG_UPD_CONFIRMED_REC_A is set, and the server has | |||
intact. | the following confirmed record, then this request is an illegal | |||
attempt at an update by an unauthorized principal. | ||||
{ ownerid_arg, verifier_arg, old_principal_arg, clientid_ret, | ||||
confirmed } | ||||
The server returns NFS4ERR_PERM and leaves the client record | ||||
intact. | ||||
18.36. Operation 43: CREATE_SESSION - Create New Session and Confirm | 18.36. Operation 43: CREATE_SESSION - Create New Session and Confirm | |||
Client ID | Client ID | |||
18.36.1. ARGUMENT | 18.36.1. ARGUMENT | |||
struct channel_attrs4 { | struct channel_attrs4 { | |||
count4 ca_headerpadsize; | count4 ca_headerpadsize; | |||
count4 ca_maxrequestsize; | count4 ca_maxrequestsize; | |||
count4 ca_maxresponsesize; | count4 ca_maxresponsesize; | |||
count4 ca_maxresponsesize_cached; | count4 ca_maxresponsesize_cached; | |||
count4 ca_maxoperations; | count4 ca_maxoperations; | |||
count4 ca_maxrequests; | count4 ca_maxrequests; | |||
uint32_t ca_rdma_ird<1>; | uint32_t ca_rdma_ird<1>; | |||
}; | }; | |||
skipping to change at page 564, line 32 ¶ | skipping to change at line 26178 ¶ | |||
* The first session created with a new client ID serves to confirm | * The first session created with a new client ID serves to confirm | |||
the creation of that client's state on the server. The server | the creation of that client's state on the server. The server | |||
returns the parameter values for the new session. | returns the parameter values for the new session. | |||
* The connection CREATE_SESSION that is sent over is associated with | * The connection CREATE_SESSION that is sent over is associated with | |||
the session's fore channel. | the session's fore channel. | |||
The arguments and results of CREATE_SESSION are described as follows: | The arguments and results of CREATE_SESSION are described as follows: | |||
csa_clientid: | csa_clientid: This is the client ID with which the new session will | |||
be associated. The corresponding result is csr_sessionid, the | ||||
This is the client ID with which the new session will be | ||||
associated. The corresponding result is csr_sessionid, the | ||||
session ID of the new session. | session ID of the new session. | |||
csa_sequence: | csa_sequence: Each client ID serializes CREATE_SESSION via a per- | |||
client ID sequence number (see Section 18.36.4). The | ||||
Each client ID serializes CREATE_SESSION via a per-client ID | corresponding result is csr_sequence, which MUST be equal to | |||
sequence number (see Section 18.36.4). The corresponding result | csa_sequence. | |||
is csr_sequence, which MUST be equal to csa_sequence. | ||||
In the next three arguments, the client offers a value that is to be | In the next three arguments, the client offers a value that is to be | |||
a property of the session. Except where stated otherwise, it is | a property of the session. Except where stated otherwise, it is | |||
RECOMMENDED that the server accept the value. If it is not | RECOMMENDED that the server accept the value. If it is not | |||
acceptable, the server MAY use a different value. Regardless, the | acceptable, the server MAY use a different value. Regardless, the | |||
server MUST return the value the session will use (which will be | server MUST return the value the session will use (which will be | |||
either what the client offered, or what the server is insisting on) | either what the client offered, or what the server is insisting on) | |||
to the client. | to the client. | |||
csa_flags: | csa_flags: The csa_flags field contains a list of the following flag | |||
bits: | ||||
The csa_flags field contains a list of the following flag bits: | ||||
CREATE_SESSION4_FLAG_PERSIST: | CREATE_SESSION4_FLAG_PERSIST: | |||
If CREATE_SESSION4_FLAG_PERSIST is set, the client wants the | If CREATE_SESSION4_FLAG_PERSIST is set, the client wants the | |||
server to provide a persistent reply cache. For sessions in | server to provide a persistent reply cache. For sessions in | |||
which only idempotent operations will be used (e.g., a read- | which only idempotent operations will be used (e.g., a read- | |||
only session), clients SHOULD NOT set | only session), clients SHOULD NOT set | |||
CREATE_SESSION4_FLAG_PERSIST. If the server does not or cannot | CREATE_SESSION4_FLAG_PERSIST. If the server does not or cannot | |||
provide a persistent reply cache, the server MUST NOT set | provide a persistent reply cache, the server MUST NOT set | |||
CREATE_SESSION4_FLAG_PERSIST in the field csr_flags. | CREATE_SESSION4_FLAG_PERSIST in the field csr_flags. | |||
If the server is a pNFS metadata server, for reasons described | If the server is a pNFS metadata server, for reasons described | |||
in Section 12.5.2 it SHOULD support | in Section 12.5.2 it SHOULD support | |||
skipping to change at page 565, line 47 ¶ | skipping to change at line 26235 ¶ | |||
the connection over which the CREATE_SESSION operation arrived | the connection over which the CREATE_SESSION operation arrived | |||
is currently in non-RDMA mode but has the capability to operate | is currently in non-RDMA mode but has the capability to operate | |||
in RDMA mode, then the client is requesting that the server | in RDMA mode, then the client is requesting that the server | |||
"step up" to RDMA mode on the connection. If the server | "step up" to RDMA mode on the connection. If the server | |||
agrees, it sets CREATE_SESSION4_FLAG_CONN_RDMA in the result | agrees, it sets CREATE_SESSION4_FLAG_CONN_RDMA in the result | |||
field csr_flags. If CREATE_SESSION4_FLAG_CONN_RDMA is not set | field csr_flags. If CREATE_SESSION4_FLAG_CONN_RDMA is not set | |||
in csa_flags, then CREATE_SESSION4_FLAG_CONN_RDMA MUST NOT be | in csa_flags, then CREATE_SESSION4_FLAG_CONN_RDMA MUST NOT be | |||
set in csr_flags. Note that once the server agrees to step up, | set in csr_flags. Note that once the server agrees to step up, | |||
it and the client MUST exchange all future traffic on the | it and the client MUST exchange all future traffic on the | |||
connection with RPC RDMA framing and not Record Marking ([32]). | connection with RPC RDMA framing and not Record Marking ([32]). | |||
4 | ||||
csa_fore_chan_attrs, csa_fore_chan_attrs: | csa_fore_chan_attrs, csa_fore_chan_attrs: The csa_fore_chan_attrs | |||
and csa_back_chan_attrs fields apply to attributes of the fore | ||||
The csa_fore_chan_attrs and csa_back_chan_attrs fields apply to | channel (which conveys requests originating from the client to the | |||
attributes of the fore channel (which conveys requests originating | server), and the backchannel (the channel that conveys callback | |||
from the client to the server), and the backchannel (the channel | requests originating from the server to the client), respectively. | |||
that conveys callback requests originating from the server to the | The results are in corresponding structures called | |||
client), respectively. The results are in corresponding | csr_fore_chan_attrs and csr_back_chan_attrs. The results | |||
structures called csr_fore_chan_attrs and csr_back_chan_attrs. | establish attributes for each channel, and on all subsequent use | |||
The results establish attributes for each channel, and on all | of each channel of the session. Each structure has the following | |||
subsequent use of each channel of the session. Each structure has | fields: | |||
the following fields: | ||||
ca_headerpadsize: | ca_headerpadsize: | |||
The maximum amount of padding the requester is willing to apply | The maximum amount of padding the requester is willing to apply | |||
to ensure that write payloads are aligned on some boundary at | to ensure that write payloads are aligned on some boundary at | |||
the replier. For each channel, the server | the replier. For each channel, the server | |||
* will reply in ca_headerpadsize with its preferred value, or | * will reply in ca_headerpadsize with its preferred value, or | |||
zero if padding is not in use, and | zero if padding is not in use, and | |||
* MAY decrease this value but MUST NOT increase it. | * MAY decrease this value but MUST NOT increase it. | |||
ca_maxrequestsize: | ca_maxrequestsize: | |||
skipping to change at page 567, line 25 ¶ | skipping to change at line 26306 ¶ | |||
requester decides which replies to cache via an argument to the | requester decides which replies to cache via an argument to the | |||
SEQUENCE (the sa_cachethis field, see Section 18.46) or | SEQUENCE (the sa_cachethis field, see Section 18.46) or | |||
CB_SEQUENCE (the csa_cachethis field, see Section 20.9) | CB_SEQUENCE (the csa_cachethis field, see Section 20.9) | |||
operations. After the session is created, if a requester sends | operations. After the session is created, if a requester sends | |||
a request for which the size of the reply would exceed | a request for which the size of the reply would exceed | |||
ca_maxresponsesize_cached, the replier will return | ca_maxresponsesize_cached, the replier will return | |||
NFS4ERR_REP_TOO_BIG_TO_CACHE, per the description in | NFS4ERR_REP_TOO_BIG_TO_CACHE, per the description in | |||
Section 2.10.6.4. | Section 2.10.6.4. | |||
ca_maxoperations: | ca_maxoperations: | |||
The maximum number of operations the replier will accept in a | The maximum number of operations the replier will accept in a | |||
COMPOUND or CB_COMPOUND. For the backchannel, the server MUST | COMPOUND or CB_COMPOUND. For the backchannel, the server MUST | |||
NOT change the value the client offers. For the fore channel, | NOT change the value the client offers. For the fore channel, | |||
the server MAY change the requested value. After the session | the server MAY change the requested value. After the session | |||
is created, if a requester sends a COMPOUND or CB_COMPOUND with | is created, if a requester sends a COMPOUND or CB_COMPOUND with | |||
more operations than ca_maxoperations, the replier MUST return | more operations than ca_maxoperations, the replier MUST return | |||
NFS4ERR_TOO_MANY_OPS. | NFS4ERR_TOO_MANY_OPS. | |||
ca_maxrequests: | ca_maxrequests: | |||
The maximum number of concurrent COMPOUND or CB_COMPOUND | The maximum number of concurrent COMPOUND or CB_COMPOUND | |||
requests the requester will send on the session. Subsequent | requests the requester will send on the session. Subsequent | |||
requests will each be assigned a slot identifier by the | requests will each be assigned a slot identifier by the | |||
requester within the range zero to ca_maxrequests - 1 | requester within the range zero to ca_maxrequests - 1 | |||
inclusive. For the backchannel, the server MUST NOT change the | inclusive. For the backchannel, the server MUST NOT change the | |||
value the client offers. For the fore channel, the server MAY | value the client offers. For the fore channel, the server MAY | |||
change the requested value. | change the requested value. | |||
ca_rdma_ird: | ca_rdma_ird: | |||
This array has a maximum of one element. If this array has one | This array has a maximum of one element. If this array has one | |||
element, then the element contains the inbound RDMA read queue | element, then the element contains the inbound RDMA read queue | |||
depth (IRD). For each channel, the server MAY decrease this | depth (IRD). For each channel, the server MAY decrease this | |||
value, but MUST NOT increase it. | value, but MUST NOT increase it. | |||
csa_cb_program | csa_cb_program This is the ONC RPC program number the server MUST | |||
This is the ONC RPC program number the server MUST use in any | use in any callbacks sent through the backchannel to the client. | |||
callbacks sent through the backchannel to the client. The server | The server MUST specify an ONC RPC program number equal to | |||
MUST specify an ONC RPC program number equal to csa_cb_program and | csa_cb_program and an ONC RPC version number equal to 4 in | |||
an ONC RPC version number equal to 4 in callbacks sent to the | callbacks sent to the client. If a CB_COMPOUND is sent to the | |||
client. If a CB_COMPOUND is sent to the client, the server MUST | client, the server MUST use a minor version number of 1. There is | |||
use a minor version number of 1. There is no corresponding | no corresponding result. | |||
result. | ||||
csa_sec_parms | ||||
The field csa_sec_parms is an array of acceptable security | csa_sec_parms The field csa_sec_parms is an array of acceptable | |||
credentials the server can use on the session's backchannel. | security credentials the server can use on the session's | |||
Three security flavors are supported: AUTH_NONE, AUTH_SYS, and | backchannel. Three security flavors are supported: AUTH_NONE, | |||
RPCSEC_GSS. If AUTH_NONE is specified for a credential, then this | AUTH_SYS, and RPCSEC_GSS. If AUTH_NONE is specified for a | |||
says the client is authorizing the server to use AUTH_NONE on all | credential, then this says the client is authorizing the server to | |||
callbacks for the session. If AUTH_SYS is specified, then the | use AUTH_NONE on all callbacks for the session. If AUTH_SYS is | |||
client is authorizing the server to use AUTH_SYS on all callbacks, | specified, then the client is authorizing the server to use | |||
using the credential specified cbsp_sys_cred. If RPCSEC_GSS is | AUTH_SYS on all callbacks, using the credential specified | |||
specified, then the server is allowed to use the RPCSEC_GSS | cbsp_sys_cred. If RPCSEC_GSS is specified, then the server is | |||
context specified in cbsp_gss_parms as the RPCSEC_GSS context in | allowed to use the RPCSEC_GSS context specified in cbsp_gss_parms | |||
the credential of the RPC header of callbacks to the client. | as the RPCSEC_GSS context in the credential of the RPC header of | |||
There is no corresponding result. | callbacks to the client. There is no corresponding result. | |||
The RPCSEC_GSS context for the backchannel is specified via a pair | The RPCSEC_GSS context for the backchannel is specified via a pair | |||
of values of data type gsshandle4_t. The data type gsshandle4_t | of values of data type gsshandle4_t. The data type gsshandle4_t | |||
represents an RPCSEC_GSS handle, and is precisely the same as the | represents an RPCSEC_GSS handle, and is precisely the same as the | |||
data type of the "handle" field of the rpc_gss_init_res data type | data type of the "handle" field of the rpc_gss_init_res data type | |||
defined in Section 5.2.3.1, "Context Creation Response - | defined in "Context Creation Response - Successful Acceptance", | |||
Successful Acceptance", of [4]. | Section 5.2.3.1 of [4]. | |||
The first RPCSEC_GSS handle, gcbp_handle_from_server, is the fore | The first RPCSEC_GSS handle, gcbp_handle_from_server, is the fore | |||
handle the server returned to the client (either in the handle | handle the server returned to the client (either in the handle | |||
field of data type rpc_gss_init_res or as one of the elements of | field of data type rpc_gss_init_res or as one of the elements of | |||
the spi_handles field returned in the reply to EXCHANGE_ID) when | the spi_handles field returned in the reply to EXCHANGE_ID) when | |||
the RPCSEC_GSS context was created on the server. The second | the RPCSEC_GSS context was created on the server. The second | |||
handle, gcbp_handle_from_client, is the back handle to which the | handle, gcbp_handle_from_client, is the back handle to which the | |||
client will map the RPCSEC_GSS context. The server can | client will map the RPCSEC_GSS context. The server can | |||
immediately use the value of gcbp_handle_from_client in the | immediately use the value of gcbp_handle_from_client in the | |||
RPCSEC_GSS credential in callback RPCs. That is, the value in | RPCSEC_GSS credential in callback RPCs. That is, the value in | |||
gcbp_handle_from_client can be used as the value of the field | gcbp_handle_from_client can be used as the value of the field | |||
"handle" in data type rpc_gss_cred_t (see Section 5, "Elements of | "handle" in data type rpc_gss_cred_t (see "Elements of the | |||
the RPCSEC_GSS Security Protocol", of [4]) in callback RPCs. The | RPCSEC_GSS Security Protocol", Section 5 of [4]) in callback RPCs. | |||
server MUST use the RPCSEC_GSS security service specified in | The server MUST use the RPCSEC_GSS security service specified in | |||
gcbp_service, i.e., it MUST set the "service" field of the | gcbp_service, i.e., it MUST set the "service" field of the | |||
rpc_gss_cred_t data type in RPCSEC_GSS credential to the value of | rpc_gss_cred_t data type in RPCSEC_GSS credential to the value of | |||
gcbp_service (see Section 5.3.1, "RPC Request Header", of [4]). | gcbp_service (see "RPC Request Header", Section 5.3.1 of [4]). | |||
If the RPCSEC_GSS handle identified by gcbp_handle_from_server | If the RPCSEC_GSS handle identified by gcbp_handle_from_server | |||
does not exist on the server, the server will return | does not exist on the server, the server will return | |||
NFS4ERR_NOENT. | NFS4ERR_NOENT. | |||
Within each element of csa_sec_parms, the fore and back RPCSEC_GSS | Within each element of csa_sec_parms, the fore and back RPCSEC_GSS | |||
contexts MUST share the same GSS context and MUST have the same | contexts MUST share the same GSS context and MUST have the same | |||
seq_window (see Section 5.2.3.1 of RFC2203 [4]). The fore and | seq_window (see Section 5.2.3.1 of RFC2203 [4]). The fore and | |||
back RPCSEC_GSS context state are independent of each other as far | back RPCSEC_GSS context state are independent of each other as far | |||
as the RPCSEC_GSS sequence number (see the seq_num field in the | as the RPCSEC_GSS sequence number (see the seq_num field in the | |||
skipping to change at page 592, line 28 ¶ | skipping to change at line 27451 ¶ | |||
will contain the required number of entries. The elements of | will contain the required number of entries. The elements of | |||
logr_layout MUST be sorted in ascending order of the value of the | logr_layout MUST be sorted in ascending order of the value of the | |||
lo_offset field of each element. There MUST be no gaps or overlaps | lo_offset field of each element. There MUST be no gaps or overlaps | |||
in the range between two successive elements of logr_layout. The | in the range between two successive elements of logr_layout. The | |||
lo_iomode field in each element of logr_layout MUST be the same. | lo_iomode field in each element of logr_layout MUST be the same. | |||
Table 22 and Table 23 both refer to a returned layout iomode, offset, | Table 22 and Table 23 both refer to a returned layout iomode, offset, | |||
and length. Because the returned layout is encoded in the | and length. Because the returned layout is encoded in the | |||
logr_layout array, more description is required. | logr_layout array, more description is required. | |||
iomode | iomode The value of the returned layout iomode listed in Table 22 | |||
and Table 23 is equal to the value of the lo_iomode field in each | ||||
The value of the returned layout iomode listed in Table 22 and | ||||
Table 23 is equal to the value of the lo_iomode field in each | ||||
element of logr_layout. As shown in Table 22 and Table 23, the | element of logr_layout. As shown in Table 22 and Table 23, the | |||
metadata server MAY return a layout with an lo_iomode different | metadata server MAY return a layout with an lo_iomode different | |||
from the requested iomode (field loga_iomode of the request). If | from the requested iomode (field loga_iomode of the request). If | |||
it does so, it MUST ensure that the lo_iomode is more permissive | it does so, it MUST ensure that the lo_iomode is more permissive | |||
than the loga_iomode requested. For example, this behavior allows | than the loga_iomode requested. For example, this behavior allows | |||
an implementation to upgrade LAYOUTIOMODE4_READ requests to | an implementation to upgrade LAYOUTIOMODE4_READ requests to | |||
LAYOUTIOMODE4_RW requests at its discretion, within the limits of | LAYOUTIOMODE4_RW requests at its discretion, within the limits of | |||
the layout type specific protocol. A lo_iomode of either | the layout type specific protocol. A lo_iomode of either | |||
LAYOUTIOMODE4_READ or LAYOUTIOMODE4_RW MUST be returned. | LAYOUTIOMODE4_READ or LAYOUTIOMODE4_RW MUST be returned. | |||
offset | offset The value of the returned layout offset listed in Table 22 | |||
and Table 23 is always equal to the lo_offset field of the first | ||||
The value of the returned layout offset listed in Table 22 and | ||||
Table 23 is always equal to the lo_offset field of the first | ||||
element logr_layout. | element logr_layout. | |||
length | length When setting the value of the returned layout length, the | |||
When setting the value of the returned layout length, the | ||||
situation is complicated by the possibility that the special | situation is complicated by the possibility that the special | |||
layout length value NFS4_UINT64_MAX is involved. For a | layout length value NFS4_UINT64_MAX is involved. For a | |||
logr_layout array of N elements, the lo_length field in the first | logr_layout array of N elements, the lo_length field in the first | |||
N-1 elements MUST NOT be NFS4_UINT64_MAX. The lo_length field of | N-1 elements MUST NOT be NFS4_UINT64_MAX. The lo_length field of | |||
the last element of logr_layout can be NFS4_UINT64_MAX under some | the last element of logr_layout can be NFS4_UINT64_MAX under some | |||
conditions as described in the following list. | conditions as described in the following list. | |||
* If an applicable rule of Table 22 states that the metadata | * If an applicable rule of Table 22 states that the metadata | |||
server MUST return a layout of length NFS4_UINT64_MAX, then the | server MUST return a layout of length NFS4_UINT64_MAX, then the | |||
lo_length field of the last element of logr_layout MUST be | lo_length field of the last element of logr_layout MUST be | |||
skipping to change at page 631, line 10 ¶ | skipping to change at line 29136 ¶ | |||
returning layouts via LAYOUTRETURN. The CB_LAYOUTRECALL operation | returning layouts via LAYOUTRETURN. The CB_LAYOUTRECALL operation | |||
specifies one of three forms of recall processing with the value of | specifies one of three forms of recall processing with the value of | |||
layoutrecall_type4. The recall is for one of the following: a | layoutrecall_type4. The recall is for one of the following: a | |||
specific layout of a specific file (LAYOUTRECALL4_FILE), an entire | specific layout of a specific file (LAYOUTRECALL4_FILE), an entire | |||
file system ID (LAYOUTRECALL4_FSID), or all file systems | file system ID (LAYOUTRECALL4_FSID), or all file systems | |||
(LAYOUTRECALL4_ALL). | (LAYOUTRECALL4_ALL). | |||
The behavior of the operation varies based on the value of the | The behavior of the operation varies based on the value of the | |||
layoutrecall_type4. The value and behaviors are: | layoutrecall_type4. The value and behaviors are: | |||
LAYOUTRECALL4_FILE | LAYOUTRECALL4_FILE For a layout to match the recall request, the | |||
values of the following fields must match those of the layout: | ||||
For a layout to match the recall request, the values of the | clora_type, clora_iomode, lor_fh, and the byte-range specified by | |||
following fields must match those of the layout: clora_type, | lor_offset and lor_length. The clora_iomode field may have a | |||
clora_iomode, lor_fh, and the byte-range specified by lor_offset | special value of LAYOUTIOMODE4_ANY. The special value | |||
and lor_length. The clora_iomode field may have a special value | LAYOUTIOMODE4_ANY will match any iomode originally returned in a | |||
of LAYOUTIOMODE4_ANY. The special value LAYOUTIOMODE4_ANY will | layout; therefore, it acts as a wild card. The other special | |||
match any iomode originally returned in a layout; therefore, it | value used is for lor_length. If lor_length has a value of | |||
acts as a wild card. The other special value used is for | NFS4_UINT64_MAX, the lor_length field means the maximum possible | |||
lor_length. If lor_length has a value of NFS4_UINT64_MAX, the | file size. If a matching layout is found, it MUST be returned | |||
lor_length field means the maximum possible file size. If a | using the LAYOUTRETURN operation (see Section 18.44). An example | |||
matching layout is found, it MUST be returned using the | of the field's special value use is if clora_iomode is | |||
LAYOUTRETURN operation (see Section 18.44). An example of the | LAYOUTIOMODE4_ANY, lor_offset is zero, and lor_length is | |||
field's special value use is if clora_iomode is LAYOUTIOMODE4_ANY, | NFS4_UINT64_MAX, then the entire layout is to be returned. | |||
lor_offset is zero, and lor_length is NFS4_UINT64_MAX, then the | ||||
entire layout is to be returned. | ||||
The NFS4ERR_NOMATCHING_LAYOUT error is only returned when the | The NFS4ERR_NOMATCHING_LAYOUT error is only returned when the | |||
client does not hold layouts for the file or if the client does | client does not hold layouts for the file or if the client does | |||
not have any overlapping layouts for the specification in the | not have any overlapping layouts for the specification in the | |||
layout recall. | layout recall. | |||
LAYOUTRECALL4_FSID and LAYOUTRECALL4_ALL | LAYOUTRECALL4_FSID and LAYOUTRECALL4_ALL If LAYOUTRECALL4_FSID is | |||
specified, the fsid specifies the file system for which any | ||||
If LAYOUTRECALL4_FSID is specified, the fsid specifies the file | outstanding layouts MUST be returned. If LAYOUTRECALL4_ALL is | |||
system for which any outstanding layouts MUST be returned. If | specified, all outstanding layouts MUST be returned. In addition, | |||
LAYOUTRECALL4_ALL is specified, all outstanding layouts MUST be | LAYOUTRECALL4_FSID and LAYOUTRECALL4_ALL specify that all the | |||
returned. In addition, LAYOUTRECALL4_FSID and LAYOUTRECALL4_ALL | storage device ID to storage device address mappings in the | |||
specify that all the storage device ID to storage device address | affected file system(s) are also recalled. The respective | |||
mappings in the affected file system(s) are also recalled. The | LAYOUTRETURN with either LAYOUTRETURN4_FSID or LAYOUTRETURN4_ALL | |||
respective LAYOUTRETURN with either LAYOUTRETURN4_FSID or | acknowledges to the server that the client invalidated the said | |||
LAYOUTRETURN4_ALL acknowledges to the server that the client | device mappings. See Section 12.5.5.2.1.5 for considerations with | |||
invalidated the said device mappings. See Section 12.5.5.2.1.5 | "bulk" recall of layouts. | |||
for considerations with "bulk" recall of layouts. | ||||
The NFS4ERR_NOMATCHING_LAYOUT error is only returned when the | The NFS4ERR_NOMATCHING_LAYOUT error is only returned when the | |||
client does not hold layouts and does not have valid deviceid | client does not hold layouts and does not have valid deviceid | |||
mappings. | mappings. | |||
In processing the layout recall request, the client also varies its | In processing the layout recall request, the client also varies its | |||
behavior based on the value of the clora_changed field. This field | behavior based on the value of the clora_changed field. This field | |||
is used by the server to provide additional context for the reason | is used by the server to provide additional context for the reason | |||
why the layout is being recalled. A FALSE value for clora_changed | why the layout is being recalled. A FALSE value for clora_changed | |||
indicates that no change in the layout is expected and the client may | indicates that no change in the layout is expected and the client may | |||
skipping to change at page 655, line 41 ¶ | skipping to change at line 30276 ¶ | |||
versions of NFSv4, including those defined subsequently to the | versions of NFSv4, including those defined subsequently to the | |||
registration. If the named attribute is intended to be limited to | registration. If the named attribute is intended to be limited to | |||
specific minor versions, this will be clearly stated in the | specific minor versions, this will be clearly stated in the | |||
registry's assignment. | registry's assignment. | |||
All assignments to the registry are made on a First Come First Served | All assignments to the registry are made on a First Come First Served | |||
basis, per Section 4.1 of [62]. The policy for each assignment is | basis, per Section 4.1 of [62]. The policy for each assignment is | |||
Specification Required, per Section 4.1 of [62]. | Specification Required, per Section 4.1 of [62]. | |||
Under the NFSv4.1 specification, the name of a named attribute can in | Under the NFSv4.1 specification, the name of a named attribute can in | |||
theory be up to 2^32 - 1 bytes in length, but in practice NFSv4.1 | theory be up to 2^(32) - 1 bytes in length, but in practice NFSv4.1 | |||
clients and servers will be unable to handle a string that long. | clients and servers will be unable to handle a string that long. | |||
IANA should reject any assignment request with a named attribute that | IANA should reject any assignment request with a named attribute that | |||
exceeds 128 UTF-8 characters. To give the IESG the flexibility to | exceeds 128 UTF-8 characters. To give the IESG the flexibility to | |||
set up bases of assignment of Experimental Use and Standards Action, | set up bases of assignment of Experimental Use and Standards Action, | |||
the prefixes of "EXPE" and "STDS" are Reserved. The named attribute | the prefixes of "EXPE" and "STDS" are Reserved. The named attribute | |||
with a zero-length name is Reserved. | with a zero-length name is Reserved. | |||
The prefix "PRIV" is designated for Private Use. A site that wants | The prefix "PRIV" is designated for Private Use. A site that wants | |||
to make use of unregistered named attributes without risk of | to make use of unregistered named attributes without risk of | |||
conflicting with an assignment in IANA's registry should use the | conflicting with an assignment in IANA's registry should use the | |||
skipping to change at page 657, line 11 ¶ | skipping to change at line 30343 ¶ | |||
The registry is a list of assignments, each containing five fields | The registry is a list of assignments, each containing five fields | |||
per assignment. | per assignment. | |||
1. The name of the notification type. This name must have the | 1. The name of the notification type. This name must have the | |||
prefix "NOTIFY_DEVICEID4_". This name must be unique. | prefix "NOTIFY_DEVICEID4_". This name must be unique. | |||
2. The value of the notification. IANA will assign this number, and | 2. The value of the notification. IANA will assign this number, and | |||
the request from the registrant will use TBD1 instead of an | the request from the registrant will use TBD1 instead of an | |||
actual value. IANA MUST use a whole number that can be no higher | actual value. IANA MUST use a whole number that can be no higher | |||
than 2^32-1, and should be the next available value. The value | than 2^(32)-1, and should be the next available value. The value | |||
assigned must be unique. A Designated Expert must be used to | assigned must be unique. A Designated Expert must be used to | |||
ensure that when the name of the notification type and its value | ensure that when the name of the notification type and its value | |||
are added to the NFSv4.1 notify_deviceid_type4 enumerated data | are added to the NFSv4.1 notify_deviceid_type4 enumerated data | |||
type in the NFSv4.1 XDR description ([10]), the result continues | type in the NFSv4.1 XDR description [10], the result continues to | |||
to be a valid XDR description. | be a valid XDR description. | |||
3. The Standards Track RFC(s) that describe the notification. If | 3. The Standards Track RFC(s) that describe the notification. If | |||
the RFC(s) have not yet been published, the registrant will use | the RFC(s) have not yet been published, the registrant will use | |||
RFCTBD2, RFCTBD3, etc. instead of an actual RFC number. | RFCTBD2, RFCTBD3, etc. instead of an actual RFC number. | |||
4. How the RFC introduces the notification. This is indicated by a | 4. How the RFC introduces the notification. This is indicated by a | |||
single US-ASCII value. If the value is N, it means a minor | single US-ASCII value. If the value is N, it means a minor | |||
revision to the NFSv4 protocol. If the value is L, it means a | revision to the NFSv4 protocol. If the value is L, it means a | |||
new pNFS layout type. Other values can be used with IESG | new pNFS layout type. Other values can be used with IESG | |||
Approval. | Approval. | |||
skipping to change at page 657, line 40 ¶ | skipping to change at line 30372 ¶ | |||
allocate and assign them; the author of the relevant RFCs with | allocate and assign them; the author of the relevant RFCs with | |||
IESG Approval assigns these numbers. Each time there is a new | IESG Approval assigns these numbers. Each time there is a new | |||
minor version of NFSv4 approved, a Designated Expert should | minor version of NFSv4 approved, a Designated Expert should | |||
review the registry to make recommended updates as needed. | review the registry to make recommended updates as needed. | |||
22.3.1. Initial Registry | 22.3.1. Initial Registry | |||
The initial registry is in Table 25. Note that the next available | The initial registry is in Table 25. Note that the next available | |||
value is zero. | value is zero. | |||
+-------------------------+-------+---------+-----+----------------+ | +-------------------------+-------+----------+-----+----------------+ | |||
| Notification Name | Value | RFC | How | Minor Versions | | | Notification Name | Value | RFC | How | Minor Versions | | |||
+=========================+=======+=========+=====+================+ | +=========================+=======+==========+=====+================+ | |||
| NOTIFY_DEVICEID4_CHANGE | 1 | RFC5661 | N | 1 | | | NOTIFY_DEVICEID4_CHANGE | 1 | RFC | N | 1 | | |||
+-------------------------+-------+---------+-----+----------------+ | | | | 5661 | | | | |||
| NOTIFY_DEVICEID4_DELETE | 2 | RFC5661 | N | 1 | | +-------------------------+-------+----------+-----+----------------+ | |||
+-------------------------+-------+---------+-----+----------------+ | | NOTIFY_DEVICEID4_DELETE | 2 | RFC | N | 1 | | |||
| | | 5661 | | | | ||||
+-------------------------+-------+----------+-----+----------------+ | ||||
Table 25: Initial Device ID Notification Assignments | Table 25: Initial Device ID Notification Assignments | |||
22.3.2. Updating Registrations | 22.3.2. Updating Registrations | |||
The update of a registration will require IESG Approval on the advice | The update of a registration will require IESG Approval on the advice | |||
of a Designated Expert. | of a Designated Expert. | |||
22.4. Object Recall Types | 22.4. Object Recall Types | |||
IANA created a registry called the "NFSv4 Recallable Object Types | IANA created a registry called the "NFSv4 Recallable Object Types | |||
Registry". | Registry". | |||
skipping to change at page 658, line 39 ¶ | skipping to change at line 30418 ¶ | |||
The registry is a list of assignments, each containing five fields | The registry is a list of assignments, each containing five fields | |||
per assignment. | per assignment. | |||
1. The name of the recallable object type. This name must have the | 1. The name of the recallable object type. This name must have the | |||
prefix "RCA4_TYPE_MASK_". The name must be unique. | prefix "RCA4_TYPE_MASK_". The name must be unique. | |||
2. The value of the recallable object type. IANA will assign this | 2. The value of the recallable object type. IANA will assign this | |||
number, and the request from the registrant will use TBD1 instead | number, and the request from the registrant will use TBD1 instead | |||
of an actual value. IANA MUST use a whole number that can be no | of an actual value. IANA MUST use a whole number that can be no | |||
higher than 2^32-1, and should be the next available value. The | higher than 2^(32)-1, and should be the next available value. | |||
value must be unique. A Designated Expert must be used to ensure | The value must be unique. A Designated Expert must be used to | |||
that when the name of the recallable type and its value are added | ensure that when the name of the recallable type and its value | |||
to the NFSv4 XDR description [10], the result continues to be a | are added to the NFSv4 XDR description [10], the result continues | |||
valid XDR description. | to be a valid XDR description. | |||
3. The Standards Track RFC(s) that describe the recallable object | 3. The Standards Track RFC(s) that describe the recallable object | |||
type. If the RFC(s) have not yet been published, the registrant | type. If the RFC(s) have not yet been published, the registrant | |||
will use RFCTBD2, RFCTBD3, etc. instead of an actual RFC number. | will use RFCTBD2, RFCTBD3, etc. instead of an actual RFC number. | |||
4. How the RFC introduces the recallable object type. This is | 4. How the RFC introduces the recallable object type. This is | |||
indicated by a single US-ASCII value. If the value is N, it | indicated by a single US-ASCII value. If the value is N, it | |||
means a minor revision to the NFSv4 protocol. If the value is L, | means a minor revision to the NFSv4 protocol. If the value is L, | |||
it means a new pNFS layout type. Other values can be used with | it means a new pNFS layout type. Other values can be used with | |||
IESG Approval. | IESG Approval. | |||
skipping to change at page 660, line 27 ¶ | skipping to change at line 30501 ¶ | |||
The registry is a list of assignments, each containing five fields. | The registry is a list of assignments, each containing five fields. | |||
1. The name of the layout type. This name must have the prefix | 1. The name of the layout type. This name must have the prefix | |||
"LAYOUT4_". The name must be unique. | "LAYOUT4_". The name must be unique. | |||
2. The value of the layout type. IANA will assign this number, and | 2. The value of the layout type. IANA will assign this number, and | |||
the request from the registrant will use TBD1 instead of an | the request from the registrant will use TBD1 instead of an | |||
actual value. The value assigned must be unique. A Designated | actual value. The value assigned must be unique. A Designated | |||
Expert must be used to ensure that when the name of the layout | Expert must be used to ensure that when the name of the layout | |||
type and its value are added to the NFSv4.1 layouttype4 | type and its value are added to the NFSv4.1 layouttype4 | |||
enumerated data type in the NFSv4.1 XDR description ([10]), the | enumerated data type in the NFSv4.1 XDR description [10], the | |||
result continues to be a valid XDR description. | result continues to be a valid XDR description. | |||
3. The Standards Track RFC(s) that describe the notification. If | 3. The Standards Track RFC(s) that describe the notification. If | |||
the RFC(s) have not yet been published, the registrant will use | the RFC(s) have not yet been published, the registrant will use | |||
RFCTBD2, RFCTBD3, etc. instead of an actual RFC number. | RFCTBD2, RFCTBD3, etc. instead of an actual RFC number. | |||
Collectively, the RFC(s) must adhere to the guidelines listed in | Collectively, the RFC(s) must adhere to the guidelines listed in | |||
Section 22.5.3. | Section 22.5.3. | |||
4. How the RFC introduces the layout type. This is indicated by a | 4. How the RFC introduces the layout type. This is indicated by a | |||
single US-ASCII value. If the value is N, it means a minor | single US-ASCII value. If the value is N, it means a minor | |||
skipping to change at page 674, line 8 ¶ | skipping to change at line 31149 ¶ | |||
instance (i.e. trunking) was often treated as if two replicas were | instance (i.e. trunking) was often treated as if two replicas were | |||
involved, it was considered that two replicas were being used | involved, it was considered that two replicas were being used | |||
simultaneously. As a result, the treatment of replicas being used | simultaneously. As a result, the treatment of replicas being used | |||
simultaneously in RFC5661 [65] was not clear as it covered the two | simultaneously in RFC5661 [65] was not clear as it covered the two | |||
distinct cases of a single file system instance being accessed by | distinct cases of a single file system instance being accessed by | |||
two different network access paths and two replicas being accessed | two different network access paths and two replicas being accessed | |||
simultaneously, with the limitations of the latter case not being | simultaneously, with the limitations of the latter case not being | |||
clearly laid out. | clearly laid out. | |||
The majority of the consequences of these issues are dealt with by | The majority of the consequences of these issues are dealt with by | |||
presenting in Section 11 a replacement for Section 11 within RFC5661 | presenting in Section 11 a replacement for Section 11 of RFC 5661 | |||
[65]. This replacement modifies existing sub-sections within that | [65]. This replacement modifies existing sub-sections within that | |||
section and adds new ones, as described in Appendix B.1. Also, some | section and adds new ones, as described in Appendix B.1. Also, some | |||
existing sections are deleted. These changes were made in order to: | existing sections are deleted. These changes were made in order to: | |||
* Reorganize the description so that the case of two network access | * Reorganize the description so that the case of two network access | |||
paths to the same file system instance needs to be distinguished | paths to the same file system instance needs to be distinguished | |||
clearly from the case of two different replicas since, in the | clearly from the case of two different replicas since, in the | |||
former case, locking state is shared and there also can be sharing | former case, locking state is shared and there also can be sharing | |||
of session state. | of session state. | |||
skipping to change at page 674, line 40 ¶ | skipping to change at line 31181 ¶ | |||
transfer and Parallel NFS (pNFS). | transfer and Parallel NFS (pNFS). | |||
* Provide clarification of the fs_locations_info attribute in order | * Provide clarification of the fs_locations_info attribute in order | |||
to specify which portions of the information provided apply to a | to specify which portions of the information provided apply to a | |||
specific network access path and which to the replica which that | specific network access path and which to the replica which that | |||
path is used to access. | path is used to access. | |||
In addition, there are also updates to other sections of RFC5661 | In addition, there are also updates to other sections of RFC5661 | |||
[65], where the consequences of the incorrect assumptions underlying | [65], where the consequences of the incorrect assumptions underlying | |||
the current treatment of multi-server namespace issues also needed to | the current treatment of multi-server namespace issues also needed to | |||
be corrected. These are to be dealt with as described in Sections | be corrected. These are to be dealt with as described in Appendices | |||
B.2 through B.4. | B.2 through B.4. | |||
* A revised introductory section regarding multi-server namespace | * A revised introductory section regarding multi-server namespace | |||
facilities is provided. | facilities is provided. | |||
* A more realistic treatment of server scope is provided, which | * A more realistic treatment of server scope is provided, which | |||
reflects the more limited co-ordination of locking state adopted | reflects the more limited co-ordination of locking state adopted | |||
by servers actually sharing a common server scope. | by servers actually sharing a common server scope. | |||
* Some confusing text regarding changes in server_owner has been | * Some confusing text regarding changes in server_owner has been | |||
skipping to change at page 675, line 22 ¶ | skipping to change at line 31211 ¶ | |||
situations that would arise in dealing with transparent state | situations that would arise in dealing with transparent state | |||
migration, or because some types of reclaim issues were not | migration, or because some types of reclaim issues were not | |||
adequately dealt with in the context of fs-specific grace periods. | adequately dealt with in the context of fs-specific grace periods. | |||
For details, see Appendix B.2. | For details, see Appendix B.2. | |||
Appendix B. Changes in this Update | Appendix B. Changes in this Update | |||
B.1. Revisions Made to Section 11 of RFC5661 | B.1. Revisions Made to Section 11 of RFC5661 | |||
A number of areas needed to be revised or extended, in many case | A number of areas needed to be revised or extended, in many case | |||
replacing existing sub-sections within section 11 of RFC5661 [65]: | replacing existing sub-sections within Section 11 of RFC 5661 [65]: | |||
* New introductory material, including a terminology section, | * New introductory material, including a terminology section, | |||
replaces the existing material in RFC5661 [65] ranging from the | replaces the existing material in RFC5661 [65] ranging from the | |||
start of the existing Section 11 up to and including the existing | start of the existing Section 11 up to and including the existing | |||
Section 11.1. The new material starts at the beginning of | Section 11.1. The new material starts at the beginning of | |||
Section 11 and continues through 11.2 below. | Section 11 and continues through 11.2 below. | |||
* A significant reorganization of the material in the existing | * A significant reorganization of the material in the existing | |||
Sections 11.4 and 11.5 (of RFC5661 [65]) is necessary. The | Sections 11.4 and 11.5 of RFC 5661 [65]) is necessary. The | |||
reasons for the reorganization of these sections into a single | reasons for the reorganization of these sections into a single | |||
section with multiple subsections are discussed in Appendix B.1.1 | section with multiple subsections are discussed in Appendix B.1.1 | |||
below. This replacement appears as Section 11.5 below. | below. This replacement appears as Section 11.5 below. | |||
New material relating to the handling of the file system location | New material relating to the handling of the file system location | |||
attributes is contained in Sections 11.5.1 and 11.5.7 below. | attributes is contained in Sections 11.5.1 and 11.5.7 below. | |||
* A new section describing requirements for user and group handling | * A new section describing requirements for user and group handling | |||
within a multi-server namespace has been added as Section 11.7 | within a multi-server namespace has been added as Section 11.7 | |||
* A major replacement for the existing Section 11.7 of RFC5661 [65] | * A major replacement for the existing Section 11.7 of RFC 5661 [65] | |||
entitled "Effecting File System Transitions", will appear as | entitled "Effecting File System Transitions", will appear as | |||
Sections 11.9 through 11.14. The reasons for the reorganization | Sections 11.9 through 11.14. The reasons for the reorganization | |||
of this section into multiple sections are discussed in | of this section into multiple sections are discussed in | |||
Appendix B.1.2. | Appendix B.1.2. | |||
* A replacement for the existing Section 11.10 of RFC5661 [65] | * A replacement for the existing Section 11.10 of RFC 5661 [65] | |||
entitled "The Attribute fs_locations_info", will appear as | entitled "The Attribute fs_locations_info", will appear as | |||
Section 11.17, with Appendix B.1.3 describing the differences | Section 11.17, with Appendix B.1.3 describing the differences | |||
between the new section and the treatment within [65]. A revised | between the new section and the treatment within [65]. A revised | |||
treatment is necessary because the existing treatment did not make | treatment is necessary because the existing treatment did not make | |||
clear how the added attribute information relates to the case of | clear how the added attribute information relates to the case of | |||
trunked paths to the same replica. These issues were not | trunked paths to the same replica. These issues were not | |||
addressed in RFC5661 [65] where the concepts of a replica and a | addressed in RFC5661 [65] where the concepts of a replica and a | |||
network path used to access a replica were not clearly | network path used to access a replica were not clearly | |||
distinguished. | distinguished. | |||
B.1.1. Re-organization of Sections 11.4 and 11.5 of RFC5661 | B.1.1. Re-organization of Sections 11.4 and 11.5 of RFC5661 | |||
Previously, issues related to the fact that multiple location entries | Previously, issues related to the fact that multiple location entries | |||
directed the client to the same file system instance were dealt with | directed the client to the same file system instance were dealt with | |||
in a separate Section 11.5 of RFC5661 [65]. Because of the new | in a separate Section 11.5 of RFC 5661 [65]. Because of the new | |||
treatment of trunking, these issues now belong within Section 11.5 | treatment of trunking, these issues now belong within Section 11.5 | |||
below. | below. | |||
In this new section, trunking is dealt with in Section 11.5.2 | In this new section, trunking is dealt with in Section 11.5.2 | |||
together with the other uses of file system location information | together with the other uses of file system location information | |||
described in Sections Section 11.5.3 through 11.5.6. | described in Sections 11.5.3 through 11.5.6. | |||
As a result, Section 11.5 which will replace Section 11.4 of RFC5661 | As a result, Section 11.5 which will replace Section 11.4 of RFC 5661 | |||
[65] is substantially different than the section it replaces in that | [65] is substantially different than the section it replaces in that | |||
some existing sections will be replaced by corresponding sections | some existing sections will be replaced by corresponding sections | |||
below while, at the same time, new sections will be added, resulting | below while, at the same time, new sections will be added, resulting | |||
in a replacement containing some renumbered sections, as follows: | in a replacement containing some renumbered sections, as follows: | |||
* The material in Section 11.5, exclusive of subsections, replaces | * The material in Section 11.5, exclusive of subsections, replaces | |||
the material in Section 11.4 of RFC5661 [65] exclusive of | the material in Section 11.4 of RFC 5661 [65] exclusive of | |||
subsections. | subsections. | |||
* Section 11.5.1 is a new first subsection of the overall section. | * Section 11.5.1 is a new first subsection of the overall section. | |||
* Section 11.5.2 is a new second subsection of the overall section. | * Section 11.5.2 is a new second subsection of the overall section. | |||
* Each of the Sections 11.5.4, 11.5.5, and 11.5.6 replaces (in | * Each of the Sections 11.5.4, 11.5.5, and 11.5.6 replaces (in | |||
order) one of the corresponding Sections 11.4.1, 11.4.2, and | order) one of the corresponding Sections 11.4.1, 11.4.2, and | |||
11.4.3 of RFC5661 [65]. 11.4.4, and 11.4.5. | 11.4.3 of RFC 5661 [65]. 11.4.4, and 11.4.5. | |||
* Section 11.5.7 is a new final subsection of the overall section. | * Section 11.5.7 is a new final subsection of the overall section. | |||
B.1.2. Re-organization of Material Dealing with File System Transitions | B.1.2. Re-organization of Material Dealing with File System Transitions | |||
The material relating to file system transition, previously contained | The material relating to file system transition, previously contained | |||
in Section 11.7 of RFC5661 [65] has been reorganized and augmented as | in Section 11.7 of RFC 5661 [65] has been reorganized and augmented | |||
described below: | as described below: | |||
* Because there can be a shift of the network access paths used to | * Because there can be a shift of the network access paths used to | |||
access a file system instance without any shift between replicas, | access a file system instance without any shift between replicas, | |||
a new Section 11.9 distinguishes between those cases in which | a new Section 11.9 distinguishes between those cases in which | |||
there is a shift between distinct replicas and those involving a | there is a shift between distinct replicas and those involving a | |||
shift in network access paths with no shift between replicas. | shift in network access paths with no shift between replicas. | |||
As a result, a new Section 11.10 deals with network address | As a result, a new Section 11.10 deals with network address | |||
transitions while the bulk of the former Section 11.7 (in RFC5661 | transitions while the bulk of the former Section 11.7 of RFC 5661 | |||
[65]) is extensively modified as reflected in Section 11.11 which | [65] is extensively modified as reflected in Section 11.11 which | |||
is now limited to cases in which there is a shift between two | is now limited to cases in which there is a shift between two | |||
different sets of replicas. | different sets of replicas. | |||
* The additional Section 11.12 discusses the case in which a shift | * The additional Section 11.12 discusses the case in which a shift | |||
to a different replica is made and state is transferred to allow | to a different replica is made and state is transferred to allow | |||
the client the ability to have continued access to its accumulated | the client the ability to have continued access to its accumulated | |||
locking state on the new server. | locking state on the new server. | |||
* The additional Section 11.13 discusses the client's response to | * The additional Section 11.13 discusses the client's response to | |||
access transitions and how it determines whether migration has | access transitions and how it determines whether migration has | |||
skipping to change at page 677, line 45 ¶ | skipping to change at line 31330 ¶ | |||
this section will only deal with transitions between replicas | this section will only deal with transitions between replicas | |||
while transitions between network addresses are dealt with in | while transitions between network addresses are dealt with in | |||
other sections. Details of the reorganization are described later | other sections. Details of the reorganization are described later | |||
in this section. | in this section. | |||
* The additional Sections 11.12, 11.13, and 11.14 have been added. | * The additional Sections 11.12, 11.13, and 11.14 have been added. | |||
* Consequently, Sections 11.8, 11.9, 11.10, and 11.11 in [65] now | * Consequently, Sections 11.8, 11.9, 11.10, and 11.11 in [65] now | |||
appear as Sections 11.13, 11.14, 11.15, and 11.16, respectively. | appear as Sections 11.13, 11.14, 11.15, and 11.16, respectively. | |||
As part of this general re-organization, Section 11.7 of RFC5661 [65] | As part of this general re-organization, Section 11.7 of RFC 5661 | |||
will be modified as described below: | [65] will be modified as described below: | |||
* Sections 11.7 and 11.7.1 of RFC5661 [65] are to be replaced by | * Sections 11.7 and 11.7.1 of [65] are to be replaced by Sections | |||
Sections 11.11 and 11.11.1, respectively. | 11.11 and 11.11.1, respectively. | |||
* Section 11.7.2 (and included subsections) of RFC5661 [65] are to | * Section 11.7.2 of [65] (and included subsections) are to be | |||
be deleted. | deleted. | |||
* Sections 11.7.3, 11.7.4. 11.7.5, 11.7.5.1, and 11.7.6 of RFC5661 | * Sections 11.7.3, 11.7.4, 11.7.5, 11.7.5.1, and 11.7.6 of RFC 5661 | |||
[65] are to be replaced by Sections 11.11.2, 11.11.3, 11.11.4, | [65] are to be replaced by Sections 11.11.2, 11.11.3, 11.11.4, | |||
11.11.4.1, and 11.11.5 respectively in this document. | 11.11.4.1, and 11.11.5 respectively in this document. | |||
* Section 11.7.7 of RFC5661 [65] is to be replaced by | * Section 11.7.7 of RFC 5661 [65] is to be replaced by | |||
Section 11.11.9 This sub-section has been moved to the end of the | Section 11.11.9 This sub-section has been moved to the end of the | |||
section dealing with file system transitions. | section dealing with file system transitions. | |||
* Sections 11.7.8, 11.7.9. and 11.7.10 of RFC5661 [65] are to be | * Sections 11.7.8, 11.7.9, and 11.7.10 of RFC 5661 [65] are to be | |||
replaced by Sections 11.11.6, 11.11.7, and 11.11.8 respectively in | replaced by Sections 11.11.6, 11.11.7, and 11.11.8 respectively in | |||
this document. | this document. | |||
B.1.3. Updates to treatment of fs_locations_info | B.1.3. Updates to treatment of fs_locations_info | |||
Various elements of the fs_locations_info attribute contain | Various elements of the fs_locations_info attribute contain | |||
information that applies to either a specific file system replica or | information that applies to either a specific file system replica or | |||
to a network path or set of network paths used to access such a | to a network path or set of network paths used to access such a | |||
replica. The existing treatment of fs_locations info (in | replica. The existing treatment of fs_locations info Section 11.10 | |||
Section 11.10 of RFC5661 [65]) does not clearly distinguish these | of RFC 5661 [65]) does not clearly distinguish these cases, in part | |||
cases, in part because the document did not clearly distinguish | because the document did not clearly distinguish replicas from the | |||
replicas from the paths used to access them. | paths used to access them. | |||
In addition, special clarification needed to be provided with regard | In addition, special clarification needed to be provided with regard | |||
to the following fields: | to the following fields: | |||
* With regard to the handling of FSLI4GF_GOING, it needs to be made | * With regard to the handling of FSLI4GF_GOING, it needs to be made | |||
clear that this only applies to the unavailability of a replica | clear that this only applies to the unavailability of a replica | |||
rather than to a path to access a replica. | rather than to a path to access a replica. | |||
* In describing the appropriate value for a server to use for | * In describing the appropriate value for a server to use for | |||
fli_valid_for, it needs to be made clear that there is no need for | fli_valid_for, it needs to be made clear that there is no need for | |||
skipping to change at page 679, line 5 ¶ | skipping to change at line 31384 ¶ | |||
be provided. The existing treatment reflects the extension model | be provided. The existing treatment reflects the extension model | |||
in effect at the time RFC5661 [65] was written, and needed to be | in effect at the time RFC5661 [65] was written, and needed to be | |||
updated in accordance with the extension model described in | updated in accordance with the extension model described in | |||
RFC8178 [66]. | RFC8178 [66]. | |||
B.2. Revisions Made to Operations in RFC5661 | B.2. Revisions Made to Operations in RFC5661 | |||
Revised descriptions were needed to address issues that arose in | Revised descriptions were needed to address issues that arose in | |||
effecting necessary changes to multi-server namespace features. | effecting necessary changes to multi-server namespace features. | |||
* The existing treatment of EXCHANGE_ID (in Section 18.35 of RFC5661 | * The existing treatment of EXCHANGE_ID (Section 13.35 of RFC 5661 | |||
[65]) assumes that client IDs cannot be created/ confirmed other | [65]) assumes that client IDs cannot be created/ confirmed other | |||
than by the EXCHANGE_ID and CREATE_SESSION operations. Also, the | than by the EXCHANGE_ID and CREATE_SESSION operations. Also, the | |||
necessary use of EXCHANGE_ID in recovery from migration and | necessary use of EXCHANGE_ID in recovery from migration and | |||
related situations is not addressed clearly. A revised treatment | related situations is not addressed clearly. A revised treatment | |||
of EXCHANGE_ID is necessary and it appears in Section 18.35 while | of EXCHANGE_ID is necessary and it appears in Section 18.35 while | |||
the specific differences between it and the treatment within [65] | the specific differences between it and the treatment within [65] | |||
are explained in Appendix B.2.1 below. | are explained in Appendix B.2.1 below. | |||
* The existing treatment of RECLAIM_COMPLETE in section 18.51 of | * The existing treatment of RECLAIM_COMPLETE in 18.51 of RFC 5661 | |||
RFC5661 [65]) is not sufficiently clear about the purpose and use | [65]) is not sufficiently clear about the purpose and use of the | |||
of the rca_one_fs and how the server is to deal with inappropriate | rca_one_fs and how the server is to deal with inappropriate values | |||
values of this argument. Because the resulting confusion raises | of this argument. Because the resulting confusion raises | |||
interoperability issues, a new treatment of RECLAIM_COMPLETE is | interoperability issues, a new treatment of RECLAIM_COMPLETE is | |||
necessary and it appears in Section 18.51 below while the specific | necessary and it appears in Section 18.51 below while the specific | |||
differences between it and the treatment within RFC5661 [65] are | differences between it and the treatment within RFC5661 [65] are | |||
discussed in Appendix B.2.2 below. In addition, the definitions | discussed in Appendix B.2.2 below. In addition, the definitions | |||
of the reclaim-related errors receive an updated treatment in | of the reclaim-related errors receive an updated treatment in | |||
Section 15.1.9 to reflect the fact that there are multiple | Section 15.1.9 to reflect the fact that there are multiple | |||
contexts for lock reclaim operations. | contexts for lock reclaim operations. | |||
B.2.1. Revision to Treatment of EXCHANGE_ID | B.2.1. Revision to Treatment of EXCHANGE_ID | |||
skipping to change at page 680, line 30 ¶ | skipping to change at line 31457 ¶ | |||
which it was done, so that it could be used by a subsequent | which it was done, so that it could be used by a subsequent | |||
CREATE_SESSSION, whose parameters do not include an explicit | CREATE_SESSSION, whose parameters do not include an explicit | |||
client ID. | client ID. | |||
The new treatment explicitly discusses the role of EXCHANGE_ID in | The new treatment explicitly discusses the role of EXCHANGE_ID in | |||
associating the client ID with the connection so it can be used by | associating the client ID with the connection so it can be used by | |||
CREATE_SESSION and in associating a connection with an existing | CREATE_SESSION and in associating a connection with an existing | |||
session. | session. | |||
The new treatment can be found in Section 18.35 above. It supersedes | The new treatment can be found in Section 18.35 above. It supersedes | |||
the treatment in Section 18.35 of RFC5661 [65]. | the treatment in Section 18.35 of RFC 5661 [65]. | |||
B.2.2. Revision to Treatment of RECLAIM_COMPLETE | B.2.2. Revision to Treatment of RECLAIM_COMPLETE | |||
The following changes were made to the treatment of RECLAIM_COMPLETE | The following changes were made to the treatment of RECLAIM_COMPLETE | |||
in RFC5661 [65] to arrive at the treatment in Section 18.51. | in RFC5661 [65] to arrive at the treatment in Section 18.51. | |||
* In a number of places the text is made more explicit about the | * In a number of places the text is made more explicit about the | |||
purpose of rca_one_fs and its connection to file system migration. | purpose of rca_one_fs and its connection to file system migration. | |||
* There is a discussion of situations in which particular forms of | * There is a discussion of situations in which particular forms of | |||
skipping to change at page 681, line 9 ¶ | skipping to change at line 31483 ¶ | |||
B.3. Revisions Made to Error Definitions in RFC5661 | B.3. Revisions Made to Error Definitions in RFC5661 | |||
The new handling of various situations required revisions of some | The new handling of various situations required revisions of some | |||
existing error definition: | existing error definition: | |||
* Because of the need to appropriately address trunking-related | * Because of the need to appropriately address trunking-related | |||
issues, some uses of the term "replica" in RFC5661 [65] have | issues, some uses of the term "replica" in RFC5661 [65] have | |||
become problematic since a shift in network access paths was | become problematic since a shift in network access paths was | |||
considered to be a shift to a different replica. As a result, the | considered to be a shift to a different replica. As a result, the | |||
existing definition of NFS4ERR_MOVED (in Section 15.1.2.4 of | existing definition of NFS4ERR_MOVED (in Section 15.1.2.4 of RFC | |||
RFC5661 [65]) needs to be updated to reflect the different | 5661 [65]) needs to be updated to reflect the different handling | |||
handling of unavailability of a particular fs via a specific | of unavailability of a particular fs via a specific network | |||
network address. | address. | |||
Since such a situation is no longer considered to constitute | Since such a situation is no longer considered to constitute | |||
unavailability of a file system instance, the description needs to | unavailability of a file system instance, the description needs to | |||
change even though the set of circumstances in which it is to be | change even though the set of circumstances in which it is to be | |||
returned remain the same. The new paragraph explicitly recognizes | returned remain the same. The new paragraph explicitly recognizes | |||
that a different network address might be used, while the previous | that a different network address might be used, while the previous | |||
description, misleadingly, treated this as a shift between two | description, misleadingly, treated this as a shift between two | |||
replicas while only a single file system instance might be | replicas while only a single file system instance might be | |||
involved. The updated description appears in Section 15.1.2.4 | involved. The updated description appears in Section 15.1.2.4 | |||
below. | below. | |||
* Because of the need to accommodate use of fs-specific grace | * Because of the need to accommodate use of fs-specific grace | |||
periods, it is necessary to clarify some of the error definitions | periods, it is necessary to clarify some of the error definitions | |||
of reclaim-related errors in Section 15 of RFC5661 [65], so the | of reclaim-related errors in Section 15 of RFC 5661 [65], so the | |||
text applies properly to reclaims for all types of grace periods. | text applies properly to reclaims for all types of grace periods. | |||
The updated descriptions appear within Section 15.1.9 below. | The updated descriptions appear within Section 15.1.9 below. | |||
* Because of the need to provide the clarifications in errata report | * Because of the need to provide the clarifications in errata report | |||
2006 [63] and to adapt these to properly explain the interaction | 2006 [63] and to adapt these to properly explain the interaction | |||
of NFS4ERR_DELAY with the replay cache, a revised description of | of NFS4ERR_DELAY with the replay cache, a revised description of | |||
NFS4ERR_DELAY appears in Section 15.1.1.3. This errata report, | NFS4ERR_DELAY appears in Section 15.1.1.3. This errata report, | |||
unlike many other RFC5661 errata reports, is addressed in this | unlike many other RFC5661 errata reports, is addressed in this | |||
document because of the extensive use of NFS4ERR_DELAY in | document because of the extensive use of NFS4ERR_DELAY in | |||
connection with state migration and session migration. | connection with state migration and session migration. | |||
B.4. Other Revisions Made to RFC5661 | B.4. Other Revisions Made to RFC5661 | |||
Beside the major reworking of Section 11 and the associated revisions | Beside the major reworking of Section 11 of RFC 5661 [65] and the | |||
to existing operations and errors, there are a number of related | associated revisions to existing operations and errors, there are a | |||
changes that are necessary: | number of related changes that are necessary: | |||
* The summary that appeared in Section 1.7.3.3 of RFC5661 [65] was | * The summary that appeared in Section 1.7.3.3 of RFC 5661 [65] was | |||
revised to reflect the changes made in the revised Section 11 | revised to reflect the changes made in the revised Section 11 | |||
above. The updated summary appears as Section 1.8.3.3 above. | above. The updated summary appears as Section 1.8.3.3 above. | |||
* The discussion of server scope which appeared in Section 2.10.4 of | * The discussion of server scope which appeared in Section 2.10.4 of | |||
RFC5661 [65] needed to be replaced, since the previous text | RFC 5661 [65] needed to be replaced, since the previous text | |||
appears to require a level of inter-server co-ordination | appears to require a level of inter-server co-ordination | |||
incompatible with its basic function of avoiding the need for a | incompatible with its basic function of avoiding the need for a | |||
globally uniform means of assigning server_owner values. A | globally uniform means of assigning server_owner values. A | |||
revised treatment appears in Section 2.10.4. | revised treatment appears in Section 2.10.4. | |||
* The discussion of trunking which appeared in Section 2.10.5 of | * The discussion of trunking which appeared in Section 2.10.5 of RFC | |||
RFC5661 [65] needed to be revised, to more clearly explain the | 5661 [65] needed to be revised, to more clearly explain the | |||
multiple types of trunking support and how the client can be made | multiple types of trunking support and how the client can be made | |||
aware of the existing trunking configuration. In addition, while | aware of the existing trunking configuration. In addition, while | |||
the last paragraph (exclusive of sub-sections) of that section, | the last paragraph (exclusive of sub-sections) of that section, | |||
dealing with server_owner changes, is literally true, it has been | dealing with server_owner changes, is literally true, it has been | |||
a source of confusion. Since the existing paragraph can be read | a source of confusion. Since the existing paragraph can be read | |||
as suggesting that such changes be dealt with non-disruptively, | as suggesting that such changes be dealt with non-disruptively, | |||
the issue needs to be clarified in the revised section, which | the issue needs to be clarified in the revised section, which | |||
appears in Section 2.10.5. | appears in Section 2.10.5. | |||
Appendix C. Security Issues that Need to be Addressed | Appendix C. Security Issues that Need to be Addressed | |||
skipping to change at page 684, line 7 ¶ | skipping to change at line 31626 ¶ | |||
under the mistaken impression that network isolation provides, in | under the mistaken impression that network isolation provides, in | |||
and of itself, isolation from all potential attackers. | and of itself, isolation from all potential attackers. | |||
Given that the difficulties mentioned above apply to minor version | Given that the difficulties mentioned above apply to minor version | |||
zero as well, it may make sense to deal with these security issues in | zero as well, it may make sense to deal with these security issues in | |||
a common document applying to all NFSv4 minor versions. If that | a common document applying to all NFSv4 minor versions. If that | |||
approach is taken the, Security Considerations section of an eventual | approach is taken the, Security Considerations section of an eventual | |||
NFv4.1 bis document would reference that common document and the | NFv4.1 bis document would reference that common document and the | |||
defining RFCs for other minor versions might do so as well. | defining RFCs for other minor versions might do so as well. | |||
Appendix D. Acknowledgments | Acknowledgments | |||
D.1. Acknowledgments for this Update | Acknowledgments for this Update | |||
The authors wish to acknowledge the important role of Andy Adamson of | The authors wish to acknowledge the important role of Andy Adamson of | |||
Netapp in clarifying the need for trunking discovery functionality, | Netapp in clarifying the need for trunking discovery functionality, | |||
and exploring the role of the file system location attributes in | and exploring the role of the file system location attributes in | |||
providing the necessary support. | providing the necessary support. | |||
The authors wish to thank Tom Haynes of Hammerspace for drawing our | The authors wish to thank Tom Haynes of Hammerspace for drawing our | |||
attention to the fact that internationalization and security might | attention to the fact that internationalization and security might | |||
best be handled in documents dealing with such protocol issues as | best be handled in documents dealing with such protocol issues as | |||
they apply to all NFSv4 minor versions. | they apply to all NFSv4 minor versions. | |||
skipping to change at page 684, line 34 ¶ | skipping to change at line 31653 ¶ | |||
The authors wish to thank others that brought attention to important | The authors wish to thank others that brought attention to important | |||
issues. The comments of Trond Myklebust of Primary Data related to | issues. The comments of Trond Myklebust of Primary Data related to | |||
trunking helped to clarify the role of DNS in trunking discovery. | trunking helped to clarify the role of DNS in trunking discovery. | |||
Rick Macklem's comments brought attention to problems in the handling | Rick Macklem's comments brought attention to problems in the handling | |||
of the per-fs version of RECLAIM_COMPLETE. | of the per-fs version of RECLAIM_COMPLETE. | |||
The authors wish to thank Olga Kornievskaia of Netapp for her helpful | The authors wish to thank Olga Kornievskaia of Netapp for her helpful | |||
review comments. | review comments. | |||
D.2. Acknowledgments for RFC5661 | Acknowledgments for RFC5661 | |||
The initial text for the SECINFO extensions were edited by Mike | The initial text for the SECINFO extensions were edited by Mike | |||
Eisler with contributions from Peng Dai, Sergey Klyushin, and Carl | Eisler with contributions from Peng Dai, Sergey Klyushin, and Carl | |||
Burnett. | Burnett. | |||
The initial text for the SESSIONS extensions were edited by Tom | The initial text for the SESSIONS extensions were edited by Tom | |||
Talpey, Spencer Shepler, Jon Bauman with contributions from Charles | Talpey, Spencer Shepler, Jon Bauman with contributions from Charles | |||
Antonelli, Brent Callaghan, Mike Eisler, John Howard, Chet Juszczak, | Antonelli, Brent Callaghan, Mike Eisler, John Howard, Chet Juszczak, | |||
Trond Myklebust, Dave Noveck, John Scott, Mike Stolarchuk, and Mark | Trond Myklebust, Dave Noveck, John Scott, Mike Stolarchuk, and Mark | |||
Wittle. | Wittle. | |||
skipping to change at page 686, line 46 ¶ | skipping to change at line 31759 ¶ | |||
Jari Arkko, David Black, Scott Bradner, Lisa Dusseault, Lars Eggert, | Jari Arkko, David Black, Scott Bradner, Lisa Dusseault, Lars Eggert, | |||
Chris Newman, and Tim Polk provided valuable review and guidance. | Chris Newman, and Tim Polk provided valuable review and guidance. | |||
Olga Kornievskaia found several errors in the SSV specification. | Olga Kornievskaia found several errors in the SSV specification. | |||
Ricardo Labiaga found several places where the use of RPCSEC_GSS was | Ricardo Labiaga found several places where the use of RPCSEC_GSS was | |||
underspecified. | underspecified. | |||
Those who provided miscellaneous comments include: Andy Adamson, | Those who provided miscellaneous comments include: Andy Adamson, | |||
Sunil Bhargo, Alex Burlyga, Pranoop Erasani, Bruce Fields, Vadim | Sunil Bhargo, Alex Burlyga, Pranoop Erasani, Bruce Fields, Vadim | |||
Finkelstein, Jason Goldschmidt, Vijay K. Gurbani, Sergey Klyushin, | Finkelstein, Jason Goldschmidt, Vijay K. Gurbani, Sergey Klyushin, | |||
Ricardo Labiaga, James Lentini, Anshul Madan, Daniel Muntz, Daniel | Ricardo Labiaga, James Lentini, Anshul Madan, Daniel Muntz, Daniel | |||
Picken, Archana Ramani, Jim Rees, Mahesh Siddheshwar, Tom Talpey, and | Picken, Archana Ramani, Jim Rees, Mahesh Siddheshwar, Tom Talpey, and | |||
Peter Varga. | Peter Varga. | |||
Authors' Addresses | Authors' Addresses | |||
David Noveck (editor) | David Noveck (editor) | |||
NetApp | NetApp | |||
1601 Trapelo Road, Suite 16 | 1601 Trapelo Road, Suite 16 | |||
Waltham, MA 02451 | Waltham, MA 02451 | |||
United States of America | United States of America | |||
Phone: +1-781-768-5347 | Phone: +1-781-768-5347 | |||
Email: dnoveck@netapp.com | Email: dnoveck@netapp.com | |||
Charles Lever | Charles Lever | |||
End of changes. 416 change blocks. | ||||
954 lines changed or deleted | 778 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |