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