draft-ietf-nfsv4-minorversion1-PAv5.txt | draft-ietf-nfsv4-minorversion1-PAv6.txt | |||
---|---|---|---|---|
NFSv4 S. Shepler | NFSv4 S. Shepler | |||
Internet-Draft M. Eisler | Internet-Draft M. Eisler | |||
Intended status: Standards Track D. Noveck | Intended status: Standards Track D. Noveck | |||
Expires: March 10, 2010 Editors | Expires: May 1, 2010 Editors | |||
September 06, 2009 | October 28, 2009 | |||
NFS Version 4 Minor Version 1 | NFS Version 4 Minor Version 1 | |||
draft-ietf-nfsv4-minorversion1-PAv5.txt | draft-ietf-nfsv4-minorversion1-PAv6.txt | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 1, line 33 | skipping to change at page 1, line 33 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on March 10, 2010. | This Internet-Draft will expire on May 1, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2009 IETF Trust and the persons identified as the | Copyright (c) 2009 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 | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 3, line 49 | skipping to change at page 3, line 49 | |||
2.9.1. REQUIRED and RECOMMENDED Properties of Transports . 40 | 2.9.1. REQUIRED and RECOMMENDED Properties of Transports . 40 | |||
2.9.2. Client and Server Transport Behavior . . . . . . . . 41 | 2.9.2. Client and Server Transport Behavior . . . . . . . . 41 | |||
2.9.3. Ports . . . . . . . . . . . . . . . . . . . . . . . 42 | 2.9.3. Ports . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
2.10. Session . . . . . . . . . . . . . . . . . . . . . . . . 42 | 2.10. Session . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
2.10.1. Motivation and Overview . . . . . . . . . . . . . . 42 | 2.10.1. Motivation and Overview . . . . . . . . . . . . . . 42 | |||
2.10.2. NFSv4 Integration . . . . . . . . . . . . . . . . . 44 | 2.10.2. NFSv4 Integration . . . . . . . . . . . . . . . . . 44 | |||
2.10.3. Channels . . . . . . . . . . . . . . . . . . . . . . 45 | 2.10.3. Channels . . . . . . . . . . . . . . . . . . . . . . 45 | |||
2.10.4. Server Scope . . . . . . . . . . . . . . . . . . . . 46 | 2.10.4. Server Scope . . . . . . . . . . . . . . . . . . . . 46 | |||
2.10.5. Trunking . . . . . . . . . . . . . . . . . . . . . . 49 | 2.10.5. Trunking . . . . . . . . . . . . . . . . . . . . . . 49 | |||
2.10.6. Exactly Once Semantics . . . . . . . . . . . . . . . 52 | 2.10.6. Exactly Once Semantics . . . . . . . . . . . . . . . 52 | |||
2.10.7. RDMA Considerations . . . . . . . . . . . . . . . . 65 | 2.10.7. RDMA Considerations . . . . . . . . . . . . . . . . 67 | |||
2.10.8. Sessions Security . . . . . . . . . . . . . . . . . 68 | 2.10.8. Sessions Security . . . . . . . . . . . . . . . . . 70 | |||
2.10.9. The Secret State Verifier (SSV) GSS Mechanism . . . 74 | 2.10.9. The Secret State Verifier (SSV) GSS Mechanism . . . 75 | |||
2.10.10. Security Considerations for RPCSEC_GSS when using | 2.10.10. Security Considerations for RPCSEC_GSS when using | |||
the SSV Mechanism . . . . . . . . . . . . . . . . . 78 | the SSV Mechanism . . . . . . . . . . . . . . . . . 79 | |||
2.10.11. Session Mechanics - Steady State . . . . . . . . . . 79 | 2.10.11. Session Mechanics - Steady State . . . . . . . . . . 81 | |||
2.10.12. Session Inactivity Timer . . . . . . . . . . . . . . 81 | 2.10.12. Session Inactivity Timer . . . . . . . . . . . . . . 82 | |||
2.10.13. Session Mechanics - Recovery . . . . . . . . . . . . 81 | 2.10.13. Session Mechanics - Recovery . . . . . . . . . . . . 83 | |||
2.10.14. Parallel NFS and Sessions . . . . . . . . . . . . . 86 | 2.10.14. Parallel NFS and Sessions . . . . . . . . . . . . . 88 | |||
3. Protocol Constants and Data Types . . . . . . . . . . . . . . 86 | 3. Protocol Constants and Data Types . . . . . . . . . . . . . . 88 | |||
3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . 87 | 3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . 88 | |||
3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 87 | 3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 89 | |||
3.3. Structured Data Types . . . . . . . . . . . . . . . . . 89 | 3.3. Structured Data Types . . . . . . . . . . . . . . . . . 91 | |||
4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 97 | 4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 99 | |||
4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 98 | 4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 99 | |||
4.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . 98 | 4.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . 99 | |||
4.1.2. Public Filehandle . . . . . . . . . . . . . . . . . 98 | 4.1.2. Public Filehandle . . . . . . . . . . . . . . . . . 100 | |||
4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 99 | 4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 100 | |||
4.2.1. General Properties of a Filehandle . . . . . . . . . 99 | 4.2.1. General Properties of a Filehandle . . . . . . . . . 101 | |||
4.2.2. Persistent Filehandle . . . . . . . . . . . . . . . 100 | 4.2.2. Persistent Filehandle . . . . . . . . . . . . . . . 101 | |||
4.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . 100 | 4.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . 102 | |||
4.3. One Method of Constructing a Volatile Filehandle . . . . 101 | 4.3. One Method of Constructing a Volatile Filehandle . . . . 103 | |||
4.4. Client Recovery from Filehandle Expiration . . . . . . . 102 | 4.4. Client Recovery from Filehandle Expiration . . . . . . . 103 | |||
5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 103 | 5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 104 | |||
5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . 104 | 5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . 105 | |||
5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 104 | 5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 106 | |||
5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 105 | 5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 106 | |||
5.4. Classification of Attributes . . . . . . . . . . . . . . 106 | 5.4. Classification of Attributes . . . . . . . . . . . . . . 108 | |||
5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 107 | 5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 109 | |||
5.6. REQUIRED Attributes - List and Definition References . . 107 | 5.6. REQUIRED Attributes - List and Definition References . . 109 | |||
5.7. RECOMMENDED Attributes - List and Definition | 5.7. RECOMMENDED Attributes - List and Definition | |||
References . . . . . . . . . . . . . . . . . . . . . . . 108 | References . . . . . . . . . . . . . . . . . . . . . . . 110 | |||
5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 110 | 5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 112 | |||
5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 110 | 5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 112 | |||
5.8.2. Definitions of Uncategorized RECOMMENDED | 5.8.2. Definitions of Uncategorized RECOMMENDED | |||
Attributes . . . . . . . . . . . . . . . . . . . . . 112 | Attributes . . . . . . . . . . . . . . . . . . . . . 114 | |||
5.9. Interpreting owner and owner_group . . . . . . . . . . . 119 | 5.9. Interpreting owner and owner_group . . . . . . . . . . . 120 | |||
5.10. Character Case Attributes . . . . . . . . . . . . . . . 121 | 5.10. Character Case Attributes . . . . . . . . . . . . . . . 122 | |||
5.11. Directory Notification Attributes . . . . . . . . . . . 121 | 5.11. Directory Notification Attributes . . . . . . . . . . . 123 | |||
5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 121 | 5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 123 | |||
5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 123 | 5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 125 | |||
6. Access Control Attributes . . . . . . . . . . . . . . . . . . 126 | 6. Access Control Attributes . . . . . . . . . . . . . . . . . . 128 | |||
6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 126 | 6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 128 | |||
6.2. File Attributes Discussion . . . . . . . . . . . . . . . 127 | 6.2. File Attributes Discussion . . . . . . . . . . . . . . . 129 | |||
6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 127 | 6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 129 | |||
6.2.2. Attribute 58: dacl . . . . . . . . . . . . . . . . . 143 | 6.2.2. Attribute 58: dacl . . . . . . . . . . . . . . . . . 144 | |||
6.2.3. Attribute 59: sacl . . . . . . . . . . . . . . . . . 143 | 6.2.3. Attribute 59: sacl . . . . . . . . . . . . . . . . . 144 | |||
6.2.4. Attribute 33: mode . . . . . . . . . . . . . . . . . 143 | 6.2.4. Attribute 33: mode . . . . . . . . . . . . . . . . . 144 | |||
6.2.5. Attribute 74: mode_set_masked . . . . . . . . . . . 143 | 6.2.5. Attribute 74: mode_set_masked . . . . . . . . . . . 145 | |||
6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 144 | 6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 146 | |||
6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 144 | 6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 146 | |||
6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 145 | 6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 147 | |||
6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 146 | 6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 148 | |||
6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 147 | 6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 148 | |||
6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 148 | 6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 150 | |||
6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 149 | 6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 150 | |||
7. Single-server Namespace . . . . . . . . . . . . . . . . . . . 153 | 7. Single-server Namespace . . . . . . . . . . . . . . . . . . . 154 | |||
7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 153 | 7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 155 | |||
7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 153 | 7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 155 | |||
7.3. Server Pseudo File System . . . . . . . . . . . . . . . 154 | 7.3. Server Pseudo File System . . . . . . . . . . . . . . . 155 | |||
7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 154 | 7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 156 | |||
7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 154 | 7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 156 | |||
7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 155 | 7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 157 | |||
7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 155 | 7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 157 | |||
7.8. Security Policy and Namespace Presentation . . . . . . . 156 | 7.8. Security Policy and Namespace Presentation . . . . . . . 157 | |||
8. State Management . . . . . . . . . . . . . . . . . . . . . . 157 | 8. State Management . . . . . . . . . . . . . . . . . . . . . . 158 | |||
8.1. Client and Session ID . . . . . . . . . . . . . . . . . 158 | 8.1. Client and Session ID . . . . . . . . . . . . . . . . . 159 | |||
8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 158 | 8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 160 | |||
8.2.1. Stateid Types . . . . . . . . . . . . . . . . . . . 159 | 8.2.1. Stateid Types . . . . . . . . . . . . . . . . . . . 160 | |||
8.2.2. Stateid Structure . . . . . . . . . . . . . . . . . 160 | 8.2.2. Stateid Structure . . . . . . . . . . . . . . . . . 161 | |||
8.2.3. Special Stateids . . . . . . . . . . . . . . . . . . 161 | 8.2.3. Special Stateids . . . . . . . . . . . . . . . . . . 163 | |||
8.2.4. Stateid Lifetime and Validation . . . . . . . . . . 162 | 8.2.4. Stateid Lifetime and Validation . . . . . . . . . . 164 | |||
8.2.5. Stateid Use for I/O Operations . . . . . . . . . . . 165 | 8.2.5. Stateid Use for I/O Operations . . . . . . . . . . . 167 | |||
8.2.6. Stateid Use for SETATTR Operations . . . . . . . . . 166 | 8.2.6. Stateid Use for SETATTR Operations . . . . . . . . . 168 | |||
8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 167 | 8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 168 | |||
8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 169 | 8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 171 | |||
8.4.1. Client Failure and Recovery . . . . . . . . . . . . 169 | 8.4.1. Client Failure and Recovery . . . . . . . . . . . . 171 | |||
8.4.2. Server Failure and Recovery . . . . . . . . . . . . 170 | 8.4.2. Server Failure and Recovery . . . . . . . . . . . . 172 | |||
8.4.3. Network Partitions and Recovery . . . . . . . . . . 175 | 8.4.3. Network Partitions and Recovery . . . . . . . . . . 177 | |||
8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 180 | 8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 182 | |||
8.6. Short and Long Leases . . . . . . . . . . . . . . . . . 181 | 8.6. Short and Long Leases . . . . . . . . . . . . . . . . . 183 | |||
8.7. Clocks, Propagation Delay, and Calculating Lease | 8.7. Clocks, Propagation Delay, and Calculating Lease | |||
Expiration . . . . . . . . . . . . . . . . . . . . . . . 181 | Expiration . . . . . . . . . . . . . . . . . . . . . . . 183 | |||
8.8. Obsolete Locking Infrastructure From NFSv4.0 . . . . . . 182 | 8.8. Obsolete Locking Infrastructure From NFSv4.0 . . . . . . 184 | |||
9. File Locking and Share Reservations . . . . . . . . . . . . . 183 | 9. File Locking and Share Reservations . . . . . . . . . . . . . 185 | |||
9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 183 | 9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 185 | |||
9.1.1. State-owner Definition . . . . . . . . . . . . . . . 183 | 9.1.1. State-owner Definition . . . . . . . . . . . . . . . 185 | |||
9.1.2. Use of the Stateid and Locking . . . . . . . . . . . 184 | 9.1.2. Use of the Stateid and Locking . . . . . . . . . . . 185 | |||
9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 187 | 9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 188 | |||
9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 187 | 9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 189 | |||
9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . 188 | 9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . 189 | |||
9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 188 | 9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 190 | |||
9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 189 | 9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 190 | |||
9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 190 | 9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 191 | |||
9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 191 | 9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 192 | |||
9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 191 | 9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 193 | |||
9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 192 | 9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 194 | |||
9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 193 | 9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 194 | |||
10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 193 | 10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 195 | |||
10.1. Performance Challenges for Client-Side Caching . . . . . 194 | 10.1. Performance Challenges for Client-Side Caching . . . . . 195 | |||
10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 195 | 10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 196 | |||
10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 197 | 10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 198 | |||
10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 199 | 10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 201 | |||
10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 199 | 10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 201 | |||
10.3.2. Data Caching and File Locking . . . . . . . . . . . 201 | 10.3.2. Data Caching and File Locking . . . . . . . . . . . 202 | |||
10.3.3. Data Caching and Mandatory File Locking . . . . . . 202 | 10.3.3. Data Caching and Mandatory File Locking . . . . . . 204 | |||
10.3.4. Data Caching and File Identity . . . . . . . . . . . 203 | 10.3.4. Data Caching and File Identity . . . . . . . . . . . 204 | |||
10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 204 | 10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 205 | |||
10.4.1. Open Delegation and Data Caching . . . . . . . . . . 206 | 10.4.1. Open Delegation and Data Caching . . . . . . . . . . 208 | |||
10.4.2. Open Delegation and File Locks . . . . . . . . . . . 207 | 10.4.2. Open Delegation and File Locks . . . . . . . . . . . 209 | |||
10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 208 | 10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 209 | |||
10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 211 | 10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 212 | |||
10.4.5. Clients that Fail to Honor Delegation Recalls . . . 213 | 10.4.5. Clients that Fail to Honor Delegation Recalls . . . 214 | |||
10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 213 | 10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 215 | |||
10.4.7. Delegations via WANT_DELEGATION . . . . . . . . . . 214 | 10.4.7. Delegations via WANT_DELEGATION . . . . . . . . . . 215 | |||
10.5. Data Caching and Revocation . . . . . . . . . . . . . . 215 | 10.5. Data Caching and Revocation . . . . . . . . . . . . . . 216 | |||
10.5.1. Revocation Recovery for Write Open Delegation . . . 215 | 10.5.1. Revocation Recovery for Write Open Delegation . . . 217 | |||
10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 216 | 10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 217 | |||
10.7. Data and Metadata Caching and Memory Mapped Files . . . 218 | 10.7. Data and Metadata Caching and Memory Mapped Files . . . 219 | |||
10.8. Name and Directory Caching without Directory | 10.8. Name and Directory Caching without Directory | |||
Delegations . . . . . . . . . . . . . . . . . . . . . . 220 | Delegations . . . . . . . . . . . . . . . . . . . . . . 222 | |||
10.8.1. Name Caching . . . . . . . . . . . . . . . . . . . . 220 | 10.8.1. Name Caching . . . . . . . . . . . . . . . . . . . . 222 | |||
10.8.2. Directory Caching . . . . . . . . . . . . . . . . . 222 | 10.8.2. Directory Caching . . . . . . . . . . . . . . . . . 223 | |||
10.9. Directory Delegations . . . . . . . . . . . . . . . . . 223 | 10.9. Directory Delegations . . . . . . . . . . . . . . . . . 224 | |||
10.9.1. Introduction to Directory Delegations . . . . . . . 223 | 10.9.1. Introduction to Directory Delegations . . . . . . . 224 | |||
10.9.2. Directory Delegation Design . . . . . . . . . . . . 224 | 10.9.2. Directory Delegation Design . . . . . . . . . . . . 225 | |||
10.9.3. Attributes in Support of Directory Notifications . . 225 | 10.9.3. Attributes in Support of Directory Notifications . . 226 | |||
10.9.4. Directory Delegation Recall . . . . . . . . . . . . 225 | 10.9.4. Directory Delegation Recall . . . . . . . . . . . . 226 | |||
10.9.5. Directory Delegation Recovery . . . . . . . . . . . 226 | 10.9.5. Directory Delegation Recovery . . . . . . . . . . . 227 | |||
11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 226 | 11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 227 | |||
11.1. Location Attributes . . . . . . . . . . . . . . . . . . 226 | 11.1. Location Attributes . . . . . . . . . . . . . . . . . . 228 | |||
11.2. File System Presence or Absence . . . . . . . . . . . . 227 | 11.2. File System Presence or Absence . . . . . . . . . . . . 228 | |||
11.3. Getting Attributes for an Absent File System . . . . . . 228 | 11.3. Getting Attributes for an Absent File System . . . . . . 229 | |||
11.3.1. GETATTR Within an Absent File System . . . . . . . . 228 | 11.3.1. GETATTR Within an Absent File System . . . . . . . . 230 | |||
11.3.2. READDIR and Absent File Systems . . . . . . . . . . 229 | 11.3.2. READDIR and Absent File Systems . . . . . . . . . . 231 | |||
11.4. Uses of Location Information . . . . . . . . . . . . . . 230 | 11.4. Uses of Location Information . . . . . . . . . . . . . . 231 | |||
11.4.1. File System Replication . . . . . . . . . . . . . . 231 | 11.4.1. File System Replication . . . . . . . . . . . . . . 232 | |||
11.4.2. File System Migration . . . . . . . . . . . . . . . 231 | 11.4.2. File System Migration . . . . . . . . . . . . . . . 233 | |||
11.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 233 | 11.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 234 | |||
11.5. Location Entries and Server Identity . . . . . . . . . . 234 | 11.5. Location Entries and Server Identity . . . . . . . . . . 236 | |||
11.6. Additional Client-side Considerations . . . . . . . . . 235 | 11.6. Additional Client-side Considerations . . . . . . . . . 236 | |||
11.7. Effecting File System Transitions . . . . . . . . . . . 235 | 11.7. Effecting File System Transitions . . . . . . . . . . . 237 | |||
11.7.1. File System Transitions and Simultaneous Access . . 237 | 11.7.1. File System Transitions and Simultaneous Access . . 238 | |||
11.7.2. Simultaneous Use and Transparent Transitions . . . . 237 | 11.7.2. Simultaneous Use and Transparent Transitions . . . . 239 | |||
11.7.3. Filehandles and File System Transitions . . . . . . 240 | 11.7.3. Filehandles and File System Transitions . . . . . . 242 | |||
11.7.4. Fileids and File System Transitions . . . . . . . . 240 | 11.7.4. Fileids and File System Transitions . . . . . . . . 242 | |||
11.7.5. Fsids and File System Transitions . . . . . . . . . 242 | 11.7.5. Fsids and File System Transitions . . . . . . . . . 243 | |||
11.7.6. The Change Attribute and File System Transitions . . 242 | 11.7.6. The Change Attribute and File System Transitions . . 244 | |||
11.7.7. Lock State and File System Transitions . . . . . . . 243 | 11.7.7. Lock State and File System Transitions . . . . . . . 244 | |||
11.7.8. Write Verifiers and File System Transitions . . . . 247 | 11.7.8. Write Verifiers and File System Transitions . . . . 249 | |||
11.7.9. Readdir Cookies and Verifiers and File System | 11.7.9. Readdir Cookies and Verifiers and File System | |||
Transitions . . . . . . . . . . . . . . . . . . . . 247 | Transitions . . . . . . . . . . . . . . . . . . . . 249 | |||
11.7.10. File System Data and File System Transitions . . . . 247 | 11.7.10. File System Data and File System Transitions . . . . 249 | |||
11.8. Effecting File System Referrals . . . . . . . . . . . . 249 | 11.8. Effecting File System Referrals . . . . . . . . . . . . 251 | |||
11.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 249 | 11.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 251 | |||
11.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 253 | 11.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 255 | |||
11.9. The Attribute fs_locations . . . . . . . . . . . . . . . 256 | 11.9. The Attribute fs_locations . . . . . . . . . . . . . . . 257 | |||
11.10. The Attribute fs_locations_info . . . . . . . . . . . . 259 | 11.10. The Attribute fs_locations_info . . . . . . . . . . . . 260 | |||
11.10.1. The fs_locations_server4 Structure . . . . . . . . . 262 | 11.10.1. The fs_locations_server4 Structure . . . . . . . . . 264 | |||
11.10.2. The fs_locations_info4 Structure . . . . . . . . . . 268 | 11.10.2. The fs_locations_info4 Structure . . . . . . . . . . 269 | |||
11.10.3. The fs_locations_item4 Structure . . . . . . . . . . 269 | 11.10.3. The fs_locations_item4 Structure . . . . . . . . . . 270 | |||
11.11. The Attribute fs_status . . . . . . . . . . . . . . . . 270 | 11.11. The Attribute fs_status . . . . . . . . . . . . . . . . 272 | |||
12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 274 | 12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 276 | |||
12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 274 | 12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 276 | |||
12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 275 | 12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 277 | |||
12.2.1. Metadata . . . . . . . . . . . . . . . . . . . . . . 276 | 12.2.1. Metadata . . . . . . . . . . . . . . . . . . . . . . 278 | |||
12.2.2. Metadata Server . . . . . . . . . . . . . . . . . . 276 | 12.2.2. Metadata Server . . . . . . . . . . . . . . . . . . 278 | |||
12.2.3. pNFS Client . . . . . . . . . . . . . . . . . . . . 276 | 12.2.3. pNFS Client . . . . . . . . . . . . . . . . . . . . 278 | |||
12.2.4. Storage Device . . . . . . . . . . . . . . . . . . . 276 | 12.2.4. Storage Device . . . . . . . . . . . . . . . . . . . 278 | |||
12.2.5. Storage Protocol . . . . . . . . . . . . . . . . . . 277 | 12.2.5. Storage Protocol . . . . . . . . . . . . . . . . . . 279 | |||
12.2.6. Control Protocol . . . . . . . . . . . . . . . . . . 277 | 12.2.6. Control Protocol . . . . . . . . . . . . . . . . . . 279 | |||
12.2.7. Layout Types . . . . . . . . . . . . . . . . . . . . 278 | 12.2.7. Layout Types . . . . . . . . . . . . . . . . . . . . 280 | |||
12.2.8. Layout . . . . . . . . . . . . . . . . . . . . . . . 278 | 12.2.8. Layout . . . . . . . . . . . . . . . . . . . . . . . 280 | |||
12.2.9. Layout Iomode . . . . . . . . . . . . . . . . . . . 279 | 12.2.9. Layout Iomode . . . . . . . . . . . . . . . . . . . 281 | |||
12.2.10. Device IDs . . . . . . . . . . . . . . . . . . . . . 279 | 12.2.10. Device IDs . . . . . . . . . . . . . . . . . . . . . 281 | |||
12.3. pNFS Operations . . . . . . . . . . . . . . . . . . . . 281 | 12.3. pNFS Operations . . . . . . . . . . . . . . . . . . . . 283 | |||
12.4. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 282 | 12.4. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 284 | |||
12.5. Layout Semantics . . . . . . . . . . . . . . . . . . . . 282 | 12.5. Layout Semantics . . . . . . . . . . . . . . . . . . . . 284 | |||
12.5.1. Guarantees Provided by Layouts . . . . . . . . . . . 282 | 12.5.1. Guarantees Provided by Layouts . . . . . . . . . . . 284 | |||
12.5.2. Getting a Layout . . . . . . . . . . . . . . . . . . 283 | 12.5.2. Getting a Layout . . . . . . . . . . . . . . . . . . 285 | |||
12.5.3. Layout Stateid . . . . . . . . . . . . . . . . . . . 284 | 12.5.3. Layout Stateid . . . . . . . . . . . . . . . . . . . 286 | |||
12.5.4. Committing a Layout . . . . . . . . . . . . . . . . 285 | 12.5.4. Committing a Layout . . . . . . . . . . . . . . . . 287 | |||
12.5.5. Recalling a Layout . . . . . . . . . . . . . . . . . 288 | 12.5.5. Recalling a Layout . . . . . . . . . . . . . . . . . 290 | |||
12.5.6. Revoking Layouts . . . . . . . . . . . . . . . . . . 296 | 12.5.6. Revoking Layouts . . . . . . . . . . . . . . . . . . 299 | |||
12.5.7. Metadata Server Write Propagation . . . . . . . . . 297 | 12.5.7. Metadata Server Write Propagation . . . . . . . . . 299 | |||
12.6. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 297 | 12.6. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 299 | |||
12.7. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 298 | 12.7. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 301 | |||
12.7.1. Recovery from Client Restart . . . . . . . . . . . . 299 | 12.7.1. Recovery from Client Restart . . . . . . . . . . . . 301 | |||
12.7.2. Dealing with Lease Expiration on the Client . . . . 299 | 12.7.2. Dealing with Lease Expiration on the Client . . . . 301 | |||
12.7.3. Dealing with Loss of Layout State on the Metadata | 12.7.3. Dealing with Loss of Layout State on the Metadata | |||
Server . . . . . . . . . . . . . . . . . . . . . . . 300 | Server . . . . . . . . . . . . . . . . . . . . . . . 302 | |||
12.7.4. Recovery from Metadata Server Restart . . . . . . . 301 | 12.7.4. Recovery from Metadata Server Restart . . . . . . . 303 | |||
12.7.5. Operations During Metadata Server Grace Period . . . 303 | 12.7.5. Operations During Metadata Server Grace Period . . . 305 | |||
12.7.6. Storage Device Recovery . . . . . . . . . . . . . . 303 | 12.7.6. Storage Device Recovery . . . . . . . . . . . . . . 305 | |||
12.8. Metadata and Storage Device Roles . . . . . . . . . . . 303 | 12.8. Metadata and Storage Device Roles . . . . . . . . . . . 306 | |||
12.9. Security Considerations for pNFS . . . . . . . . . . . . 304 | 12.9. Security Considerations for pNFS . . . . . . . . . . . . 306 | |||
13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout Type . 305 | 13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout Type . 307 | |||
13.1. Client ID and Session Considerations . . . . . . . . . . 305 | 13.1. Client ID and Session Considerations . . . . . . . . . . 307 | |||
13.1.1. Sessions Considerations for Data Servers . . . . . . 308 | 13.1.1. Sessions Considerations for Data Servers . . . . . . 310 | |||
13.2. File Layout Definitions . . . . . . . . . . . . . . . . 308 | 13.2. File Layout Definitions . . . . . . . . . . . . . . . . 310 | |||
13.3. File Layout Data Types . . . . . . . . . . . . . . . . . 309 | 13.3. File Layout Data Types . . . . . . . . . . . . . . . . . 311 | |||
13.4. Interpreting the File Layout . . . . . . . . . . . . . . 313 | 13.4. Interpreting the File Layout . . . . . . . . . . . . . . 315 | |||
13.4.1. Determining the Stripe Unit Number . . . . . . . . . 313 | 13.4.1. Determining the Stripe Unit Number . . . . . . . . . 315 | |||
13.4.2. Interpreting the File Layout Using Sparse Packing . 313 | 13.4.2. Interpreting the File Layout Using Sparse Packing . 316 | |||
13.4.3. Interpreting the File Layout Using Dense Packing . . 316 | 13.4.3. Interpreting the File Layout Using Dense Packing . . 318 | |||
13.4.4. Sparse and Dense Stripe Unit Packing . . . . . . . . 318 | 13.4.4. Sparse and Dense Stripe Unit Packing . . . . . . . . 320 | |||
13.5. Data Server Multipathing . . . . . . . . . . . . . . . . 320 | 13.5. Data Server Multipathing . . . . . . . . . . . . . . . . 322 | |||
13.6. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 321 | 13.6. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 323 | |||
13.7. COMMIT Through Metadata Server . . . . . . . . . . . . . 323 | 13.7. COMMIT Through Metadata Server . . . . . . . . . . . . . 325 | |||
13.8. The Layout Iomode . . . . . . . . . . . . . . . . . . . 325 | 13.8. The Layout Iomode . . . . . . . . . . . . . . . . . . . 327 | |||
13.9. Metadata and Data Server State Coordination . . . . . . 325 | 13.9. Metadata and Data Server State Coordination . . . . . . 327 | |||
13.9.1. Global Stateid Requirements . . . . . . . . . . . . 325 | 13.9.1. Global Stateid Requirements . . . . . . . . . . . . 327 | |||
13.9.2. Data Server State Propagation . . . . . . . . . . . 326 | 13.9.2. Data Server State Propagation . . . . . . . . . . . 328 | |||
13.10. Data Server Component File Size . . . . . . . . . . . . 328 | 13.10. Data Server Component File Size . . . . . . . . . . . . 330 | |||
13.11. Layout Revocation and Fencing . . . . . . . . . . . . . 329 | 13.11. Layout Revocation and Fencing . . . . . . . . . . . . . 331 | |||
13.12. Security Considerations for the File Layout Type . . . . 329 | 13.12. Security Considerations for the File Layout Type . . . . 331 | |||
14. Internationalization . . . . . . . . . . . . . . . . . . . . 330 | 14. Internationalization . . . . . . . . . . . . . . . . . . . . 332 | |||
14.1. Stringprep profile for the utf8str_cs type . . . . . . . 331 | 14.1. Stringprep profile for the utf8str_cs type . . . . . . . 333 | |||
14.2. Stringprep profile for the utf8str_cis type . . . . . . 333 | 14.2. Stringprep profile for the utf8str_cis type . . . . . . 335 | |||
14.3. Stringprep profile for the utf8str_mixed type . . . . . 334 | 14.3. Stringprep profile for the utf8str_mixed type . . . . . 336 | |||
14.4. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 335 | 14.4. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 337 | |||
14.5. UTF-8 Related Errors . . . . . . . . . . . . . . . . . . 336 | 14.5. UTF-8 Related Errors . . . . . . . . . . . . . . . . . . 338 | |||
15. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 336 | 15. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 338 | |||
15.1. Error Definitions . . . . . . . . . . . . . . . . . . . 337 | 15.1. Error Definitions . . . . . . . . . . . . . . . . . . . 339 | |||
15.1.1. General Errors . . . . . . . . . . . . . . . . . . . 339 | 15.1.1. General Errors . . . . . . . . . . . . . . . . . . . 341 | |||
15.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 341 | 15.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 343 | |||
15.1.3. Compound Structure Errors . . . . . . . . . . . . . 342 | 15.1.3. Compound Structure Errors . . . . . . . . . . . . . 344 | |||
15.1.4. File System Errors . . . . . . . . . . . . . . . . . 344 | 15.1.4. File System Errors . . . . . . . . . . . . . . . . . 346 | |||
15.1.5. State Management Errors . . . . . . . . . . . . . . 346 | 15.1.5. State Management Errors . . . . . . . . . . . . . . 348 | |||
15.1.6. Security Errors . . . . . . . . . . . . . . . . . . 346 | 15.1.6. Security Errors . . . . . . . . . . . . . . . . . . 348 | |||
15.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 347 | 15.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 349 | |||
15.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 348 | 15.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 350 | |||
15.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 349 | 15.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 351 | |||
15.1.10. pNFS Errors . . . . . . . . . . . . . . . . . . . . 350 | 15.1.10. pNFS Errors . . . . . . . . . . . . . . . . . . . . 352 | |||
15.1.11. Session Use Errors . . . . . . . . . . . . . . . . . 351 | 15.1.11. Session Use Errors . . . . . . . . . . . . . . . . . 353 | |||
15.1.12. Session Management Errors . . . . . . . . . . . . . 353 | 15.1.12. Session Management Errors . . . . . . . . . . . . . 355 | |||
15.1.13. Client Management Errors . . . . . . . . . . . . . . 353 | 15.1.13. Client Management Errors . . . . . . . . . . . . . . 355 | |||
15.1.14. Delegation Errors . . . . . . . . . . . . . . . . . 354 | 15.1.14. Delegation Errors . . . . . . . . . . . . . . . . . 356 | |||
15.1.15. Attribute Handling Errors . . . . . . . . . . . . . 354 | 15.1.15. Attribute Handling Errors . . . . . . . . . . . . . 356 | |||
15.1.16. Obsoleted Errors . . . . . . . . . . . . . . . . . . 355 | 15.1.16. Obsoleted Errors . . . . . . . . . . . . . . . . . . 357 | |||
15.2. Operations and their valid errors . . . . . . . . . . . 356 | 15.2. Operations and their valid errors . . . . . . . . . . . 358 | |||
15.3. Callback operations and their valid errors . . . . . . . 373 | 15.3. Callback operations and their valid errors . . . . . . . 375 | |||
15.4. Errors and the operations that use them . . . . . . . . 376 | 15.4. Errors and the operations that use them . . . . . . . . 378 | |||
16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 392 | 16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 394 | |||
16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 392 | 16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 394 | |||
16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 393 | 16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 395 | |||
17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 404 | 17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 406 | |||
18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 407 | 18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 409 | |||
18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 407 | 18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 409 | |||
18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 413 | 18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 415 | |||
18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 414 | 18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 416 | |||
18.4. Operation 6: CREATE - Create a Non-Regular File Object . 417 | 18.4. Operation 6: CREATE - Create a Non-Regular File Object . 419 | |||
18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting | 18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting | |||
Recovery . . . . . . . . . . . . . . . . . . . . . . . . 420 | Recovery . . . . . . . . . . . . . . . . . . . . . . . . 422 | |||
18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 421 | 18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 423 | |||
18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 421 | 18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 423 | |||
18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 423 | 18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 425 | |||
18.9. Operation 11: LINK - Create Link to a File . . . . . . . 424 | 18.9. Operation 11: LINK - Create Link to a File . . . . . . . 426 | |||
18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 427 | 18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 429 | |||
18.11. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 431 | 18.11. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 433 | |||
18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 432 | 18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 434 | |||
18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 434 | 18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 436 | |||
18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 435 | 18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 437 | |||
18.15. Operation 17: NVERIFY - Verify Difference in | 18.15. Operation 17: NVERIFY - Verify Difference in | |||
Attributes . . . . . . . . . . . . . . . . . . . . . . . 437 | Attributes . . . . . . . . . . . . . . . . . . . . . . . 439 | |||
18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 438 | 18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 440 | |||
18.17. Operation 19: OPENATTR - Open Named Attribute | 18.17. Operation 19: OPENATTR - Open Named Attribute | |||
Directory . . . . . . . . . . . . . . . . . . . . . . . 457 | Directory . . . . . . . . . . . . . . . . . . . . . . . 459 | |||
18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 458 | 18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 460 | |||
18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 460 | 18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 462 | |||
18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 460 | 18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 462 | |||
18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 462 | 18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 464 | |||
18.22. Operation 25: READ - Read from File . . . . . . . . . . 463 | 18.22. Operation 25: READ - Read from File . . . . . . . . . . 465 | |||
18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 465 | 18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 467 | |||
18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 469 | 18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 471 | |||
18.25. Operation 28: REMOVE - Remove File System Object . . . . 470 | 18.25. Operation 28: REMOVE - Remove File System Object . . . . 472 | |||
18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 472 | 18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 474 | |||
18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 476 | 18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 478 | |||
18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 477 | 18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 479 | |||
18.29. Operation 33: SECINFO - Obtain Available Security . . . 478 | 18.29. Operation 33: SECINFO - Obtain Available Security . . . 480 | |||
18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 482 | 18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 484 | |||
18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 485 | 18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 487 | |||
18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 486 | 18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 488 | |||
18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 490 | 18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 492 | |||
18.34. Operation 41: BIND_CONN_TO_SESSION - Associate | 18.34. Operation 41: BIND_CONN_TO_SESSION - Associate | |||
Connection with Session . . . . . . . . . . . . . . . . 492 | Connection with Session . . . . . . . . . . . . . . . . 494 | |||
18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 495 | 18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 497 | |||
18.36. Operation 43: CREATE_SESSION - Create New Session and | 18.36. Operation 43: CREATE_SESSION - Create New Session and | |||
Confirm Client ID . . . . . . . . . . . . . . . . . . . 513 | Confirm Client ID . . . . . . . . . . . . . . . . . . . 515 | |||
18.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 523 | 18.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 525 | |||
18.38. Operation 45: FREE_STATEID - Free Stateid with No | 18.38. Operation 45: FREE_STATEID - Free Stateid with No | |||
Locks . . . . . . . . . . . . . . . . . . . . . . . . . 525 | Locks . . . . . . . . . . . . . . . . . . . . . . . . . 527 | |||
18.39. Operation 46: GET_DIR_DELEGATION - Get a directory | 18.39. Operation 46: GET_DIR_DELEGATION - Get a directory | |||
delegation . . . . . . . . . . . . . . . . . . . . . . . 525 | delegation . . . . . . . . . . . . . . . . . . . . . . . 528 | |||
18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 529 | 18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 532 | |||
18.41. Operation 48: GETDEVICELIST - Get All Device Mappings | 18.41. Operation 48: GETDEVICELIST - Get All Device Mappings | |||
for a File System . . . . . . . . . . . . . . . . . . . 532 | for a File System . . . . . . . . . . . . . . . . . . . 535 | |||
18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using | 18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using | |||
a Layout . . . . . . . . . . . . . . . . . . . . . . . . 533 | a Layout . . . . . . . . . . . . . . . . . . . . . . . . 536 | |||
18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 537 | 18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 540 | |||
18.44. Operation 51: LAYOUTRETURN - Release Layout | 18.44. Operation 51: LAYOUTRETURN - Release Layout | |||
Information . . . . . . . . . . . . . . . . . . . . . . 547 | Information . . . . . . . . . . . . . . . . . . . . . . 549 | |||
18.45. Operation 52: SECINFO_NO_NAME - Get Security on | 18.45. Operation 52: SECINFO_NO_NAME - Get Security on | |||
Unnamed Object . . . . . . . . . . . . . . . . . . . . . 551 | Unnamed Object . . . . . . . . . . . . . . . . . . . . . 553 | |||
18.46. Operation 53: SEQUENCE - Supply Per-Procedure | 18.46. Operation 53: SEQUENCE - Supply Per-Procedure | |||
Sequencing and Control . . . . . . . . . . . . . . . . . 552 | Sequencing and Control . . . . . . . . . . . . . . . . . 554 | |||
18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 558 | 18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 560 | |||
18.48. Operation 55: TEST_STATEID - Test Stateids for | 18.48. Operation 55: TEST_STATEID - Test Stateids for | |||
Validity . . . . . . . . . . . . . . . . . . . . . . . . 561 | Validity . . . . . . . . . . . . . . . . . . . . . . . . 563 | |||
18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 562 | 18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 564 | |||
18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 566 | 18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 568 | |||
18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims | 18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims | |||
Finished . . . . . . . . . . . . . . . . . . . . . . . . 566 | Finished . . . . . . . . . . . . . . . . . . . . . . . . 568 | |||
18.52. Operation 10044: ILLEGAL - Illegal operation . . . . . . 569 | 18.52. Operation 10044: ILLEGAL - Illegal operation . . . . . . 571 | |||
19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 569 | 19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 571 | |||
19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 570 | 19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 572 | |||
19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 570 | 19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 572 | |||
20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 574 | 20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 576 | |||
20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 574 | 20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 576 | |||
20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 575 | 20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 577 | |||
20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | 20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | |||
Client . . . . . . . . . . . . . . . . . . . . . . . . . 576 | Client . . . . . . . . . . . . . . . . . . . . . . . . . 578 | |||
20.4. Operation 6: CB_NOTIFY - Notify Client of Directory | 20.4. Operation 6: CB_NOTIFY - Notify Client of Directory | |||
Changes . . . . . . . . . . . . . . . . . . . . . . . . 580 | Changes . . . . . . . . . . . . . . . . . . . . . . . . 582 | |||
20.5. Operation 7: CB_PUSH_DELEG - Offer Previously | 20.5. Operation 7: CB_PUSH_DELEG - Offer Previously | |||
Requested Delegation to Client . . . . . . . . . . . . . 584 | Requested Delegation to Client . . . . . . . . . . . . . 586 | |||
20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable | 20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable | |||
Objects . . . . . . . . . . . . . . . . . . . . . . . . 585 | Objects . . . . . . . . . . . . . . . . . . . . . . . . 587 | |||
20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal | 20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal | |||
Resources for Recallable Objects . . . . . . . . . . . . 588 | Resources for Recallable Objects . . . . . . . . . . . . 590 | |||
20.8. Operation 10: CB_RECALL_SLOT - Change Flow Control | 20.8. Operation 10: CB_RECALL_SLOT - Change Flow Control | |||
Limits . . . . . . . . . . . . . . . . . . . . . . . . . 589 | Limits . . . . . . . . . . . . . . . . . . . . . . . . . 591 | |||
20.9. Operation 11: CB_SEQUENCE - Supply Backchannel | 20.9. Operation 11: CB_SEQUENCE - Supply Backchannel | |||
Sequencing and Control . . . . . . . . . . . . . . . . . 590 | Sequencing and Control . . . . . . . . . . . . . . . . . 592 | |||
20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | 20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | |||
Delegation Wants . . . . . . . . . . . . . . . . . . . . 592 | Delegation Wants . . . . . . . . . . . . . . . . . . . . 594 | |||
20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of | 20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of | |||
Possible Lock Availability . . . . . . . . . . . . . . . 593 | Possible Lock Availability . . . . . . . . . . . . . . . 595 | |||
20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of | 20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of | |||
Device ID Changes . . . . . . . . . . . . . . . . . . . 595 | Device ID Changes . . . . . . . . . . . . . . . . . . . 597 | |||
20.13. Operation 10044: CB_ILLEGAL - Illegal Callback | 20.13. Operation 10044: CB_ILLEGAL - Illegal Callback | |||
Operation . . . . . . . . . . . . . . . . . . . . . . . 597 | Operation . . . . . . . . . . . . . . . . . . . . . . . 599 | |||
21. Security Considerations . . . . . . . . . . . . . . . . . . . 597 | 21. Security Considerations . . . . . . . . . . . . . . . . . . . 599 | |||
22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 599 | 22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 601 | |||
22.1. Named Attribute Definitions . . . . . . . . . . . . . . 599 | 22.1. Named Attribute Definitions . . . . . . . . . . . . . . 601 | |||
22.1.1. Initial Registry . . . . . . . . . . . . . . . . . . 600 | 22.1.1. Initial Registry . . . . . . . . . . . . . . . . . . 602 | |||
22.1.2. Updating Registrations . . . . . . . . . . . . . . . 600 | 22.1.2. Updating Registrations . . . . . . . . . . . . . . . 602 | |||
22.2. Device ID Notifications . . . . . . . . . . . . . . . . 600 | 22.2. Device ID Notifications . . . . . . . . . . . . . . . . 602 | |||
22.2.1. Initial Registry . . . . . . . . . . . . . . . . . . 601 | 22.2.1. Initial Registry . . . . . . . . . . . . . . . . . . 603 | |||
22.2.2. Updating Registrations . . . . . . . . . . . . . . . 602 | 22.2.2. Updating Registrations . . . . . . . . . . . . . . . 604 | |||
22.3. Object Recall Types . . . . . . . . . . . . . . . . . . 602 | 22.3. Object Recall Types . . . . . . . . . . . . . . . . . . 604 | |||
22.3.1. Initial Registry . . . . . . . . . . . . . . . . . . 603 | 22.3.1. Initial Registry . . . . . . . . . . . . . . . . . . 605 | |||
22.3.2. Updating Registrations . . . . . . . . . . . . . . . 603 | 22.3.2. Updating Registrations . . . . . . . . . . . . . . . 605 | |||
22.4. Layout Types . . . . . . . . . . . . . . . . . . . . . . 603 | 22.4. Layout Types . . . . . . . . . . . . . . . . . . . . . . 605 | |||
22.4.1. Initial Registry . . . . . . . . . . . . . . . . . . 604 | 22.4.1. Initial Registry . . . . . . . . . . . . . . . . . . 606 | |||
22.4.2. Updating Registrations . . . . . . . . . . . . . . . 605 | 22.4.2. Updating Registrations . . . . . . . . . . . . . . . 607 | |||
22.4.3. Guidelines for Writing Layout Type Specifications . 605 | 22.4.3. Guidelines for Writing Layout Type Specifications . 607 | |||
22.5. Path Variable Definitions . . . . . . . . . . . . . . . 606 | 22.5. Path Variable Definitions . . . . . . . . . . . . . . . 608 | |||
22.5.1. Path Variables Registry . . . . . . . . . . . . . . 606 | 22.5.1. Path Variables Registry . . . . . . . . . . . . . . 608 | |||
22.5.2. Values for the ${ietf.org:CPU_ARCH} Variable . . . . 608 | 22.5.2. Values for the ${ietf.org:CPU_ARCH} Variable . . . . 610 | |||
22.5.3. Values for the ${ietf.org:OS_TYPE} Variable . . . . 609 | 22.5.3. Values for the ${ietf.org:OS_TYPE} Variable . . . . 611 | |||
23. References . . . . . . . . . . . . . . . . . . . . . . . . . 610 | 23. References . . . . . . . . . . . . . . . . . . . . . . . . . 612 | |||
23.1. Normative References . . . . . . . . . . . . . . . . . . 610 | 23.1. Normative References . . . . . . . . . . . . . . . . . . 612 | |||
23.2. Informative References . . . . . . . . . . . . . . . . . 612 | 23.2. Informative References . . . . . . . . . . . . . . . . . 614 | |||
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 614 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 616 | |||
Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 616 | Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 618 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 617 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 619 | |||
1. Introduction | 1. Introduction | |||
1.1. The NFS Version 4 Minor Version 1 Protocol | 1.1. 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 described in [30]. It generally follows the | version, NFSv4.0 is described in [30]. It generally follows the | |||
guidelines for minor versioning model listed in Section 10 of RFC | guidelines for minor versioning model listed in Section 10 of RFC | |||
3530. However, it diverges from guidelines 11 ("a client and server | 3530. However, it diverges from guidelines 11 ("a client and server | |||
skipping to change at page 60, line 13 | skipping to change at page 60, line 13 | |||
the COMPOUND or CB_COMPOUND was not cached, then the replier, | the COMPOUND or CB_COMPOUND was not cached, then the replier, | |||
* MAY return NFS4ERR_RETRY_UNCACHED_REP in reply to a Sequence | * MAY return NFS4ERR_RETRY_UNCACHED_REP in reply to a Sequence | |||
operation if the Sequence operation is not the first operation | operation if the Sequence operation is not the first operation | |||
(granted, a requester that does so is in violation of the | (granted, a requester that does so is in violation of the | |||
NFSv4.1 protocol). | NFSv4.1 protocol). | |||
* MUST NOT return NFS4ERR_RETRY_UNCACHED_REP in reply to a | * MUST NOT return NFS4ERR_RETRY_UNCACHED_REP in reply to a | |||
Sequence operation if the Sequence operation is the first | Sequence operation if the Sequence operation is the first | |||
operation. | operation. | |||
o If the second operation is an illegal operation, or an operation | ||||
that was legal in a previous minor version of NFSv4 and MUST NOT | ||||
be supported in current minor version (e.g. SETCLIENTID), the | ||||
replier MUST NOT ever return NFS4ERR_RETRY_UNCACHED_REP. Instead | ||||
the replier MUST return NFS4ERR_OP_ILLEGAL, or NFS4ERR_BADXDR, or | ||||
NFS4ERR_NOTSUPP as appropriate. | ||||
o If the second operation can result in another error status, the | ||||
replier MAY return a status other than NFS4ERR_RETRY_UNCACHED_REP, | ||||
provided the operation is not executed in such a way that the | ||||
state of the replier is changed. Examples of such an error status | ||||
include: NFS4ERR_NOTSUPP returned for an operation that is legal | ||||
but not REQUIRED in the current minor versions, and thus not | ||||
supported by the replier; NFS4ERR_SEQUENCE_POS; and | ||||
NFS4ERR_REQ_TOO_BIG. | ||||
The discussion above assumes that the retried request matches the | ||||
original one. Section 2.10.6.1.3.1 discusses what the replier might | ||||
do, and MUST do when original and retried requests do not match. | ||||
Since the replier may only cache a small amount of the information | ||||
that would be required to determine whether this is a case of a false | ||||
retry, the replier may send to the client, any of the following | ||||
responses: | ||||
o The cached reply to the original request (if the replier has | ||||
cached it in its entirety, and the users of the original request | ||||
and retry match). | ||||
o A reply that consists only of the Sequence operation with the | ||||
error NFS4ERR_FALSE_RETRY. | ||||
o A reply consisting of the response to Sequence with the status | ||||
NFS4_OK, together with the second operation as it appeared in the | ||||
retried request with an error of NFS4ERR_RETRY_UNCACHED_REP or | ||||
other error as described above. | ||||
o A reply that consists of the response to Sequence with the status | ||||
NFS4_OK, together with the second operation as it appeared in the | ||||
original request with an error of NFS4ERR_RETRY_UNCACHED_REP or | ||||
other error as described above. | ||||
2.10.6.1.3.1. False Retry | ||||
If a requester sent a Sequence operation with a slot ID and sequence | ||||
ID that are in the reply cache, but the replier detected that the | ||||
retried request is not the same as the original request, including a | ||||
retry that has different operations or different arguments in the | ||||
operations from the original, and a retry that uses a different | ||||
principal in the RPC request's credential field that translates to a | ||||
different user, then this is a false retry. When the replier detects | ||||
a false retry, it is permitted to (but not always obligated to) | ||||
return NFS4ERR_FALSE_RETRY in response to the Sequence operation when | ||||
it detects a false retry. | ||||
Translations of particularly privileged user values to other users | ||||
due to the lack of appropriately secure credentials, as configured on | ||||
the replier, should be applied before determining whether the users | ||||
are the same or different. If the replier determines the users are | ||||
different between the original request and a retry, then the replier | ||||
MUST return NFS4ERR_FALSE_RETRY. | ||||
If an operation of the retry is an illegal operation, or an operation | ||||
that was legal in a previous minor version of NFSv4 and MUST NOT be | ||||
supported in current minor version (e.g. SETCLIENTID), the replier | ||||
MAY return NFS4ERR_FALSE_RETRY (and MUST do so if the users of the | ||||
original request and retry differ). Otherwise, the replier MAY | ||||
NFS4ERR_OP_ILLEGAL, or NFS4ERR_BADXDR, or NFS4ERR_NOTSUPP as | ||||
appropriate. Note that the handling is in contrast for how replier | ||||
deals with retries requests with no cached reply. The difference is | ||||
due to NFS4ERR_FALSE_RETRY being a valid error for only Sequence | ||||
operations, whereas NFS4ERR_RETRY_UNCACHED_REP is a valid error for | ||||
all operations except illegal operations and operations that MUST NOT | ||||
be supported in the current minor version of NFSv4. | ||||
2.10.6.2. Retry and Replay of Reply | 2.10.6.2. Retry and Replay of Reply | |||
A requester MUST NOT retry a request, unless the connection it used | A requester MUST NOT retry a request, unless the connection it used | |||
to send the request disconnects. The requester can then reconnect | to send the request disconnects. The requester can then reconnect | |||
and re-send the request, or it can re-send the request over a | and re-send the request, or it can re-send the request over a | |||
different connection that is associated with the same session. | different connection that is associated with the same session. | |||
If the requester is a server wanting to re-send a callback operation | If the requester is a server wanting to re-send a callback operation | |||
over the backchannel of a session, the requester of course cannot | over the backchannel of a session, the requester of course cannot | |||
reconnect because only the client can associate connections with the | reconnect because only the client can associate connections with the | |||
skipping to change at page 294, line 23 | skipping to change at page 296, line 23 | |||
will use the highest seqid as is the usual case. | will use the highest seqid as is the usual case. | |||
12.5.5.2.1.3. Server Considerations | 12.5.5.2.1.3. Server Considerations | |||
Consider a race from the metadata server's point of view. The | Consider a race from the metadata server's point of view. The | |||
metadata server has sent a CB_LAYOUTRECALL and receives an | metadata server has sent a CB_LAYOUTRECALL and receives an | |||
overlapping LAYOUTGET for the same file before the LAYOUTRETURN(s) | overlapping LAYOUTGET for the same file before the LAYOUTRETURN(s) | |||
that respond to the CB_LAYOUTRECALL. There are three cases: | that respond to the CB_LAYOUTRECALL. There are three cases: | |||
1. The client sent the LAYOUTGET before processing the | 1. The client sent the LAYOUTGET before processing the | |||
CB_LAYOUTRECALL. The "seqid" in the layout stateid of LAYOUTGET | CB_LAYOUTRECALL. The "seqid" in the layout stateid of the | |||
is two less than the "seqid" in CB_LAYOUTRECALL. The server | arguments of LAYOUTGET is one less than the "seqid" in | |||
returns NFS4ERR_RECALLCONFLICT to the client, which indicates to | CB_LAYOUTRECALL. The server returns NFS4ERR_RECALLCONFLICT to | |||
the client that there is a pending recall. | the client, which indicates to the client that there is a pending | |||
recall. | ||||
2. The client sent the LAYOUTGET after processing the | 2. The client sent the LAYOUTGET after processing the | |||
CB_LAYOUTRECALL, but the LAYOUTGET arrived before the | CB_LAYOUTRECALL, but the LAYOUTGET arrived before the | |||
LAYOUTRETURN and the response to CB_LAYOUTRECALL that completed | LAYOUTRETURN and the response to CB_LAYOUTRECALL that completed | |||
that processing. The "seqid" in the layout stateid of LAYOUTGET | that processing. The "seqid" in the layout stateid of LAYOUTGET | |||
is equal to or greater than that of the "seqid" in | is equal to or greater than that of the "seqid" in | |||
CB_LAYOUTRECALL. The server has not received a response to the | CB_LAYOUTRECALL. The server has not received a response to the | |||
CB_LAYOUTRECALL, so it returns NFS4ERR_RECALLCONFLICT. | CB_LAYOUTRECALL, so it returns NFS4ERR_RECALLCONFLICT. | |||
3. The client sent the LAYOUTGET after processing the | 3. The client sent the LAYOUTGET after processing the | |||
skipping to change at page 343, line 8 | skipping to change at page 345, line 8 | |||
15.1.3.2. NFS4ERR_MINOR_VERS_MISMATCH (Error code 10021) | 15.1.3.2. NFS4ERR_MINOR_VERS_MISMATCH (Error code 10021) | |||
The minor version specified is not one that the current listener | The minor version specified is not one that the current listener | |||
supports. This value is returned in the overall status for the | supports. This value is returned in the overall status for the | |||
Compound but is not associated with a specific operation since the | Compound but is not associated with a specific operation since the | |||
results will specify a result count of zero. | results will specify a result count of zero. | |||
15.1.3.3. NFS4ERR_NOT_ONLY_OP (Error Code 10081) | 15.1.3.3. NFS4ERR_NOT_ONLY_OP (Error Code 10081) | |||
Certain operations, which are allowed to be executed outside of a | Certain operations, which are allowed to be executed outside of a | |||
session, MUST be the only operation within a COMPOUND. This error | session, MUST be the only operation within a Compound when ever the | |||
Compound does not start with a Sequence operation. This error | ||||
results when that constraint is not met. | results when that constraint is not met. | |||
15.1.3.4. NFS4ERR_OP_ILLEGAL (Error Code 10044) | 15.1.3.4. NFS4ERR_OP_ILLEGAL (Error Code 10044) | |||
The operation code is not a valid one for the current Compound | The operation code is not a valid one for the current Compound | |||
procedure. The opcode in the result stream matched with this error | procedure. The opcode in the result stream matched with this error | |||
is the ILLEGAL value, although the value that appears in the request | is the ILLEGAL value, although the value that appears in the request | |||
stream may be different. Where an illegal value appears and the | stream may be different. Where an illegal value appears and the | |||
replier pre-parses all operations for a Compound procedure before | replier pre-parses all operations for a Compound procedure before | |||
doing any operation execution, an RPC-level XDR error may be returned | doing any operation execution, an RPC-level XDR error may be returned | |||
skipping to change at page 352, line 46 | skipping to change at page 354, line 46 | |||
A Sequence operation was sent on a connection that has not been | A Sequence operation was sent on a connection that has not been | |||
associated with the specified session, where the client specified | associated with the specified session, where the client specified | |||
that connection association was to be enforced with SP4_MACH_CRED or | that connection association was to be enforced with SP4_MACH_CRED or | |||
SP4_SSV state protection. | SP4_SSV state protection. | |||
15.1.11.7. NFS4ERR_SEQ_FALSE_RETRY (Error Code 10076) | 15.1.11.7. NFS4ERR_SEQ_FALSE_RETRY (Error Code 10076) | |||
The requester sent a Sequence operation with a slot ID and sequence | The requester sent a Sequence operation with a slot ID and sequence | |||
ID that are in the reply cache, but the replier has detected that the | ID that are in the reply cache, but the replier has detected that the | |||
retried request is not the same as the original request, including a | retried request is not the same as the original request. See | |||
retry that has different operations or different arguments in the | Section 2.10.6.1.3.1. | |||
operations from the original, and a retry that uses a different | ||||
principal in the RPC request's credential field that translates to a | ||||
different user. In the latter case, translations of particularly | ||||
privileged user values to other users due to the lack of | ||||
appropriately secure credentials, as configured on the server, should | ||||
be applied before determining whether the users are the same or | ||||
different. | ||||
15.1.11.8. NFS4ERR_SEQ_MISORDERED (Error Code 10063) | 15.1.11.8. NFS4ERR_SEQ_MISORDERED (Error Code 10063) | |||
The requester sent a Sequence operation with an invalid sequence ID. | The requester sent a Sequence operation with an invalid sequence ID. | |||
15.1.12. Session Management Errors | 15.1.12. Session Management Errors | |||
This section deals with errors associated with requests used in | This section deals with errors associated with requests used in | |||
session management. | session management. | |||
skipping to change at page 361, line 30 | skipping to change at page 363, line 19 | |||
| | 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_TOO_MANY_OPS, | | | | NFS4ERR_SERVERFAULT, 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_STALE | | | | NFS4ERR_OP_NOT_IN_SESSION, 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_BADIOMODE, | | | | NFS4ERR_ATTRNOTSUPP, NFS4ERR_BADIOMODE, | | |||
| | NFS4ERR_BADLAYOUT, NFS4ERR_BADXDR, | | | | NFS4ERR_BADLAYOUT, NFS4ERR_BADXDR, | | |||
| | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | | | NFS4ERR_DEADSESSION, NFS4ERR_DELAY, | | |||
| | NFS4ERR_DELEG_REVOKED, NFS4ERR_EXPIRED, | | | | NFS4ERR_DELEG_REVOKED, NFS4ERR_EXPIRED, | | |||
| | NFS4ERR_FBIG, NFS4ERR_FHEXPIRED, | | | | NFS4ERR_FBIG, NFS4ERR_FHEXPIRED, | | |||
| | NFS4ERR_GRACE, NFS4ERR_INVAL, NFS4ERR_IO, | | | | NFS4ERR_GRACE, NFS4ERR_INVAL, NFS4ERR_IO, | | |||
| | NFS4ERR_ISDIR NFS4ERR_MOVED, | | | | NFS4ERR_ISDIR NFS4ERR_MOVED, | | |||
| | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | | | NFS4ERR_NOFILEHANDLE, NFS4ERR_NOTSUPP, | | |||
| | NFS4ERR_NO_GRACE, | | | | NFS4ERR_NO_GRACE, | | |||
skipping to change at page 524, line 39 | skipping to change at page 526, line 39 | |||
If the COMPOUND request starts with SEQUENCE, and if the sessionids | If the COMPOUND request starts with SEQUENCE, and if the sessionids | |||
specified in SEQUENCE and DESTROY_SESSION are the same, then | specified in SEQUENCE and DESTROY_SESSION are the same, then | |||
o DESTROY_SESSION MUST be the final operation in the COMPOUND | o DESTROY_SESSION MUST be the final operation in the COMPOUND | |||
request. | request. | |||
o It is advisable to not place DESTROY_SESSION in a COMPOUND request | o It is advisable to not place DESTROY_SESSION in a COMPOUND request | |||
with other state-modifying operations, because the DESTROY_SESSION | with other state-modifying operations, because the DESTROY_SESSION | |||
will destroy the reply cache. | will destroy the reply cache. | |||
DESTROY_SESSION MAY be the only operation in a COMPOUND request. | o Because the session and its reply cache are destroyed, a client | |||
that retries the request may receive an error in reply to the | ||||
retry, even though the original request was successful. | ||||
Because the session is destroyed, a client that retries the request | If the COMPOUND request starts with SEQUENCE, and if the sessionids | |||
may receive an error in reply to the retry, even though the original | specified in SEQUENCE and DESTROY_SESSION are the different, then | |||
request was successful. | DESTROY_SESSION can appear in any position of the COMPOUND request | |||
(except for the first position). The two sessionids can belong to | ||||
different client IDs. | ||||
If the COMPOUND request does not start with SEQUENCE, and if | ||||
DESTROY_SESSION is not the sole operation, then server MUST return | ||||
NFS4ERR_NOT_ONLY_OP. | ||||
If there is a backchannel on the session and the server has | If there is a backchannel on the session and the server has | |||
outstanding CB_COMPOUND operations for the session which have not | outstanding CB_COMPOUND operations for the session which have not | |||
been replied to, then the server MAY refuse to destroy the session | been replied to, then the server MAY refuse to destroy the session | |||
and return an error. In the event the backchannel is down, the | and return an error. If so, then in the event the backchannel is | |||
server SHOULD return NFS4ERR_CB_PATH_DOWN to inform the client that | down, the server SHOULD return NFS4ERR_CB_PATH_DOWN to inform the | |||
the backchannel needs to repaired before the server will allow the | client that the backchannel needs to repaired before the server will | |||
session to be destroyed. Otherwise, the error CB_BACK_CHAN_BUSY | allow the session to be destroyed. Otherwise, the error | |||
SHOULD be returned to indicate that there are CB_COMPOUNDs that need | CB_BACK_CHAN_BUSY SHOULD be returned to indicate that there are | |||
to be replied to. The client SHOULD reply to all outstanding | CB_COMPOUNDs that need to be replied to. The client SHOULD reply to | |||
CB_COMPOUNDs before re-sending DESTROY_SESSION. | all outstanding CB_COMPOUNDs before re-sending DESTROY_SESSION. | |||
18.38. Operation 45: FREE_STATEID - Free Stateid with No Locks | 18.38. Operation 45: FREE_STATEID - Free Stateid with No Locks | |||
18.38.1. ARGUMENT | 18.38.1. ARGUMENT | |||
struct FREE_STATEID4args { | struct FREE_STATEID4args { | |||
stateid4 fsa_stateid; | stateid4 fsa_stateid; | |||
}; | }; | |||
18.38.2. RESULT | 18.38.2. RESULT | |||
skipping to change at page 528, line 5 | skipping to change at page 530, line 36 | |||
honor the "want", the results will have | honor the "want", the results will have | |||
gddrnf_will_signal_deleg_avail set to TRUE and no error will be | gddrnf_will_signal_deleg_avail set to TRUE and no error will be | |||
indicated on return. If so the client should expect a future | indicated on return. If so the client should expect a future | |||
CB_RECALLABLE_OBJ_AVAIL operation to indicate that a directory | CB_RECALLABLE_OBJ_AVAIL operation to indicate that a directory | |||
delegation is available. If the server does not wish to honor the | delegation is available. If the server does not wish to honor the | |||
"want" or is not able to do so, it returns the error | "want" or is not able to do so, it returns the error | |||
NFS4ERR_DIRDELEG_UNAVAIL. If the delegation is immediately | NFS4ERR_DIRDELEG_UNAVAIL. If the delegation is immediately | |||
available, the server SHOULD return it with the response to the | available, the server SHOULD return it with the response to the | |||
operation, rather than via a callback. | operation, rather than via a callback. | |||
When a client makes a request for a directory delegation while it | ||||
already holds a directory delegation for that directory (including | ||||
the case where it has been recalled but not yet returned by the | ||||
client or revoked by the server), the server MUST reply with the | ||||
value of gddr_status set to NFS4_OK, the value of gddrnf_status set | ||||
to GDD4_UNAVAIL, and the value of gddrnf_will_signal_deleg_avail set | ||||
to FALSE. The delegation the client held before the request remains | ||||
intact, and its state is unchanged. The current stateid is not | ||||
changed (see Section 16.2.3.1.2 for a description of the current | ||||
stateid). | ||||
18.39.4. IMPLEMENTATION | 18.39.4. IMPLEMENTATION | |||
Directory delegations provide the benefit of improving cache | Directory delegations provide the benefit of improving cache | |||
consistency of namespace information. This is done through | consistency of namespace information. This is done through | |||
synchronous callbacks. A server must support synchronous callbacks | synchronous callbacks. A server must support synchronous callbacks | |||
in order to support directory delegations. In addition to that, | in order to support directory delegations. In addition to that, | |||
asynchronous notifications provide a way to reduce network traffic as | asynchronous notifications provide a way to reduce network traffic as | |||
well as improve client performance in certain conditions. | well as improve client performance in certain conditions. | |||
Notifications are specified in terms of potential changes to the | Notifications are specified in terms of potential changes to the | |||
skipping to change at page 617, line 33 | skipping to change at page 619, line 33 | |||
Colorado Springs, CO 80919 | Colorado Springs, CO 80919 | |||
USA | USA | |||
Phone: +1-719-599-9026 | Phone: +1-719-599-9026 | |||
Email: mike@eisler.com | Email: mike@eisler.com | |||
URI: http://www.eisler.com | URI: http://www.eisler.com | |||
David Noveck | David Noveck | |||
NetApp | NetApp | |||
1601 Trapelo Road, Suite 16 | 1601 Trapelo Road, Suite 16 | |||
Waltham, MA 02454 | Waltham, MA 02451 | |||
USA | USA | |||
Phone: +1-781-768-5347 | Phone: +1-781-768-5347 | |||
Email: dnoveck@netapp.com | Email: dnoveck@netapp.com | |||
End of changes. 46 change blocks. | ||||
366 lines changed or deleted | 454 lines changed or added | |||
This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |