draft-ietf-nfsv4-minorversion1-PAv1.txt | draft-ietf-nfsv4-minorversion1-PAv2.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: October 7, 2009 Editors | Expires: October 7, 2009 Editors | |||
April 05, 2009 | April 05, 2009 | |||
NFS Version 4 Minor Version 1 | NFS Version 4 Minor Version 1 | |||
draft-ietf-nfsv4-minorversion1-PAv1.txt | draft-ietf-nfsv4-minorversion1-PAv2.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 3, line 52 | skipping to change at page 3, line 52 | |||
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 . . . . . . . . . . . . . . . . 65 | |||
2.10.8. Sessions Security . . . . . . . . . . . . . . . . . 68 | 2.10.8. Sessions Security . . . . . . . . . . . . . . . . . 68 | |||
2.10.9. The Secret State Verifier (SSV) GSS Mechanism . . . 73 | 2.10.9. The Secret State Verifier (SSV) GSS Mechanism . . . 73 | |||
2.10.10. Session Mechanics - Steady State . . . . . . . . . . 77 | 2.10.10. Session Mechanics - Steady State . . . . . . . . . . 78 | |||
2.10.11. Session Inactivity Timer . . . . . . . . . . . . . . 79 | 2.10.11. Session Inactivity Timer . . . . . . . . . . . . . . 80 | |||
2.10.12. Session Mechanics - Recovery . . . . . . . . . . . . 80 | 2.10.12. Session Mechanics - Recovery . . . . . . . . . . . . 80 | |||
2.10.13. Parallel NFS and Sessions . . . . . . . . . . . . . 84 | 2.10.13. Parallel NFS and Sessions . . . . . . . . . . . . . 85 | |||
3. Protocol Constants and Data Types . . . . . . . . . . . . . . 85 | 3. Protocol Constants and Data Types . . . . . . . . . . . . . . 85 | |||
3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . 85 | 3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . 85 | |||
3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 86 | 3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 86 | |||
3.3. Structured Data Types . . . . . . . . . . . . . . . . . 87 | 3.3. Structured Data Types . . . . . . . . . . . . . . . . . 88 | |||
4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 96 | 4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 96 | |||
4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 96 | 4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 96 | |||
4.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . 96 | 4.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . 97 | |||
4.1.2. Public Filehandle . . . . . . . . . . . . . . . . . 97 | 4.1.2. Public Filehandle . . . . . . . . . . . . . . . . . 97 | |||
4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 97 | 4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 97 | |||
4.2.1. General Properties of a Filehandle . . . . . . . . . 98 | 4.2.1. General Properties of a Filehandle . . . . . . . . . 98 | |||
4.2.2. Persistent Filehandle . . . . . . . . . . . . . . . 98 | 4.2.2. Persistent Filehandle . . . . . . . . . . . . . . . 99 | |||
4.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . 99 | 4.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . 99 | |||
4.3. One Method of Constructing a Volatile Filehandle . . . . 100 | 4.3. One Method of Constructing a Volatile Filehandle . . . . 100 | |||
4.4. Client Recovery from Filehandle Expiration . . . . . . . 100 | 4.4. Client Recovery from Filehandle Expiration . . . . . . . 101 | |||
5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 101 | 5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 102 | |||
5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . 103 | 5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . 103 | |||
5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 103 | 5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 103 | |||
5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 103 | 5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 104 | |||
5.4. Classification of Attributes . . . . . . . . . . . . . . 105 | 5.4. Classification of Attributes . . . . . . . . . . . . . . 105 | |||
5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 106 | 5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 106 | |||
5.6. REQUIRED Attributes - List and Definition References . . 106 | 5.6. REQUIRED Attributes - List and Definition References . . 106 | |||
5.7. RECOMMENDED Attributes - List and Definition | 5.7. RECOMMENDED Attributes - List and Definition | |||
References . . . . . . . . . . . . . . . . . . . . . . . 107 | References . . . . . . . . . . . . . . . . . . . . . . . 107 | |||
5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 109 | 5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 109 | |||
5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 109 | 5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 109 | |||
5.8.2. Definitions of Uncategorized RECOMMENDED | 5.8.2. Definitions of Uncategorized RECOMMENDED | |||
Attributes . . . . . . . . . . . . . . . . . . . . . 111 | Attributes . . . . . . . . . . . . . . . . . . . . . 111 | |||
5.9. Interpreting owner and owner_group . . . . . . . . . . . 117 | 5.9. Interpreting owner and owner_group . . . . . . . . . . . 118 | |||
5.10. Character Case Attributes . . . . . . . . . . . . . . . 119 | 5.10. Character Case Attributes . . . . . . . . . . . . . . . 120 | |||
5.11. Directory Notification Attributes . . . . . . . . . . . 120 | 5.11. Directory Notification Attributes . . . . . . . . . . . 120 | |||
5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 120 | 5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 120 | |||
5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 122 | 5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 122 | |||
6. Access Control Attributes . . . . . . . . . . . . . . . . . . 125 | 6. Access Control Attributes . . . . . . . . . . . . . . . . . . 125 | |||
6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 125 | 6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 125 | |||
6.2. File Attributes Discussion . . . . . . . . . . . . . . . 126 | 6.2. File Attributes Discussion . . . . . . . . . . . . . . . 126 | |||
6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 126 | 6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 126 | |||
6.2.2. Attribute 58: dacl . . . . . . . . . . . . . . . . . 141 | 6.2.2. Attribute 58: dacl . . . . . . . . . . . . . . . . . 142 | |||
6.2.3. Attribute 59: sacl . . . . . . . . . . . . . . . . . 141 | 6.2.3. Attribute 59: sacl . . . . . . . . . . . . . . . . . 142 | |||
6.2.4. Attribute 33: mode . . . . . . . . . . . . . . . . . 141 | 6.2.4. Attribute 33: mode . . . . . . . . . . . . . . . . . 142 | |||
6.2.5. Attribute 74: mode_set_masked . . . . . . . . . . . 142 | 6.2.5. Attribute 74: mode_set_masked . . . . . . . . . . . 142 | |||
6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 143 | 6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 143 | |||
6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 143 | 6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 143 | |||
6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 144 | 6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 144 | |||
6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 145 | 6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 145 | |||
6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 145 | 6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 146 | |||
6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 147 | 6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 147 | |||
6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 147 | 6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 148 | |||
7. Single-server Namespace . . . . . . . . . . . . . . . . . . . 151 | 7. Single-server Namespace . . . . . . . . . . . . . . . . . . . 152 | |||
7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 152 | 7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 152 | |||
7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 152 | 7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 152 | |||
7.3. Server Pseudo File System . . . . . . . . . . . . . . . 152 | 7.3. Server Pseudo File System . . . . . . . . . . . . . . . 153 | |||
7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 153 | 7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 153 | |||
7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 153 | 7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 153 | |||
7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 154 | 7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 154 | |||
7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 154 | 7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 154 | |||
7.8. Security Policy and Namespace Presentation . . . . . . . 154 | 7.8. Security Policy and Namespace Presentation . . . . . . . 155 | |||
8. State Management . . . . . . . . . . . . . . . . . . . . . . 155 | 8. State Management . . . . . . . . . . . . . . . . . . . . . . 156 | |||
8.1. Client and Session ID . . . . . . . . . . . . . . . . . 156 | 8.1. Client and Session ID . . . . . . . . . . . . . . . . . 157 | |||
8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 157 | 8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 157 | |||
8.2.1. Stateid Types . . . . . . . . . . . . . . . . . . . 157 | 8.2.1. Stateid Types . . . . . . . . . . . . . . . . . . . 158 | |||
8.2.2. Stateid Structure . . . . . . . . . . . . . . . . . 158 | 8.2.2. Stateid Structure . . . . . . . . . . . . . . . . . 159 | |||
8.2.3. Special Stateids . . . . . . . . . . . . . . . . . . 160 | 8.2.3. Special Stateids . . . . . . . . . . . . . . . . . . 160 | |||
8.2.4. Stateid Lifetime and Validation . . . . . . . . . . 161 | 8.2.4. Stateid Lifetime and Validation . . . . . . . . . . 161 | |||
8.2.5. Stateid Use for I/O Operations . . . . . . . . . . . 164 | 8.2.5. Stateid Use for I/O Operations . . . . . . . . . . . 164 | |||
8.2.6. Stateid Use for SETATTR Operations . . . . . . . . . 165 | 8.2.6. Stateid Use for SETATTR Operations . . . . . . . . . 165 | |||
8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 165 | 8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 166 | |||
8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 168 | 8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 168 | |||
8.4.1. Client Failure and Recovery . . . . . . . . . . . . 168 | 8.4.1. Client Failure and Recovery . . . . . . . . . . . . 168 | |||
8.4.2. Server Failure and Recovery . . . . . . . . . . . . 169 | 8.4.2. Server Failure and Recovery . . . . . . . . . . . . 169 | |||
8.4.3. Network Partitions and Recovery . . . . . . . . . . 174 | 8.4.3. Network Partitions and Recovery . . . . . . . . . . 174 | |||
8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 179 | 8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 179 | |||
8.6. Short and Long Leases . . . . . . . . . . . . . . . . . 180 | 8.6. Short and Long Leases . . . . . . . . . . . . . . . . . 180 | |||
8.7. Clocks, Propagation Delay, and Calculating Lease | 8.7. Clocks, Propagation Delay, and Calculating Lease | |||
Expiration . . . . . . . . . . . . . . . . . . . . . . . 180 | Expiration . . . . . . . . . . . . . . . . . . . . . . . 180 | |||
8.8. Obsolete Locking Infrastructure From NFSv4.0 . . . . . . 181 | 8.8. Obsolete Locking Infrastructure From NFSv4.0 . . . . . . 181 | |||
9. File Locking and Share Reservations . . . . . . . . . . . . . 182 | 9. File Locking and Share Reservations . . . . . . . . . . . . . 182 | |||
9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 182 | 9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 182 | |||
9.1.1. State-owner Definition . . . . . . . . . . . . . . . 182 | 9.1.1. State-owner Definition . . . . . . . . . . . . . . . 182 | |||
9.1.2. Use of the Stateid and Locking . . . . . . . . . . . 182 | 9.1.2. Use of the Stateid and Locking . . . . . . . . . . . 183 | |||
9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 185 | 9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 186 | |||
9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 186 | 9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 186 | |||
9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . 186 | 9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . 187 | |||
9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 187 | 9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 187 | |||
9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 187 | 9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 188 | |||
9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 188 | 9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 189 | |||
9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 189 | 9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 190 | |||
9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 190 | 9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 190 | |||
9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 191 | 9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 191 | |||
9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 191 | 9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 192 | |||
10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 192 | 10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 192 | |||
10.1. Performance Challenges for Client-Side Caching . . . . . 192 | 10.1. Performance Challenges for Client-Side Caching . . . . . 193 | |||
10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 193 | 10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 194 | |||
10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 195 | 10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 196 | |||
10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 198 | 10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 198 | |||
10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 198 | 10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 198 | |||
10.3.2. Data Caching and File Locking . . . . . . . . . . . 199 | 10.3.2. Data Caching and File Locking . . . . . . . . . . . 200 | |||
10.3.3. Data Caching and Mandatory File Locking . . . . . . 201 | 10.3.3. Data Caching and Mandatory File Locking . . . . . . 201 | |||
10.3.4. Data Caching and File Identity . . . . . . . . . . . 201 | 10.3.4. Data Caching and File Identity . . . . . . . . . . . 202 | |||
10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 202 | 10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 203 | |||
10.4.1. Open Delegation and Data Caching . . . . . . . . . . 205 | 10.4.1. Open Delegation and Data Caching . . . . . . . . . . 205 | |||
10.4.2. Open Delegation and File Locks . . . . . . . . . . . 206 | 10.4.2. Open Delegation and File Locks . . . . . . . . . . . 206 | |||
10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 206 | 10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 207 | |||
10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 209 | 10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 210 | |||
10.4.5. Clients that Fail to Honor Delegation Recalls . . . 211 | 10.4.5. Clients that Fail to Honor Delegation Recalls . . . 212 | |||
10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 212 | 10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 212 | |||
10.4.7. Delegations via WANT_DELEGATION . . . . . . . . . . 212 | 10.4.7. Delegations via WANT_DELEGATION . . . . . . . . . . 213 | |||
10.5. Data Caching and Revocation . . . . . . . . . . . . . . 213 | 10.5. Data Caching and Revocation . . . . . . . . . . . . . . 214 | |||
10.5.1. Revocation Recovery for Write Open Delegation . . . 214 | 10.5.1. Revocation Recovery for Write Open Delegation . . . 214 | |||
10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 214 | 10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 215 | |||
10.7. Data and Metadata Caching and Memory Mapped Files . . . 216 | 10.7. Data and Metadata Caching and Memory Mapped Files . . . 217 | |||
10.8. Name and Directory Caching without Directory | 10.8. Name and Directory Caching without Directory | |||
Delegations . . . . . . . . . . . . . . . . . . . . . . 219 | Delegations . . . . . . . . . . . . . . . . . . . . . . 219 | |||
10.8.1. Name Caching . . . . . . . . . . . . . . . . . . . . 219 | 10.8.1. Name Caching . . . . . . . . . . . . . . . . . . . . 219 | |||
10.8.2. Directory Caching . . . . . . . . . . . . . . . . . 220 | 10.8.2. Directory Caching . . . . . . . . . . . . . . . . . 221 | |||
10.9. Directory Delegations . . . . . . . . . . . . . . . . . 221 | 10.9. Directory Delegations . . . . . . . . . . . . . . . . . 222 | |||
10.9.1. Introduction to Directory Delegations . . . . . . . 221 | 10.9.1. Introduction to Directory Delegations . . . . . . . 222 | |||
10.9.2. Directory Delegation Design . . . . . . . . . . . . 222 | 10.9.2. Directory Delegation Design . . . . . . . . . . . . 223 | |||
10.9.3. Attributes in Support of Directory Notifications . . 223 | 10.9.3. Attributes in Support of Directory Notifications . . 224 | |||
10.9.4. Directory Delegation Recall . . . . . . . . . . . . 223 | 10.9.4. Directory Delegation Recall . . . . . . . . . . . . 224 | |||
10.9.5. Directory Delegation Recovery . . . . . . . . . . . 224 | 10.9.5. Directory Delegation Recovery . . . . . . . . . . . 225 | |||
11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 224 | 11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 225 | |||
11.1. Location Attributes . . . . . . . . . . . . . . . . . . 225 | 11.1. Location Attributes . . . . . . . . . . . . . . . . . . 225 | |||
11.2. File System Presence or Absence . . . . . . . . . . . . 225 | 11.2. File System Presence or Absence . . . . . . . . . . . . 226 | |||
11.3. Getting Attributes for an Absent File System . . . . . . 226 | 11.3. Getting Attributes for an Absent File System . . . . . . 227 | |||
11.3.1. GETATTR Within an Absent File System . . . . . . . . 227 | 11.3.1. GETATTR Within an Absent File System . . . . . . . . 227 | |||
11.3.2. READDIR and Absent File Systems . . . . . . . . . . 228 | 11.3.2. READDIR and Absent File Systems . . . . . . . . . . 228 | |||
11.4. Uses of Location Information . . . . . . . . . . . . . . 228 | 11.4. Uses of Location Information . . . . . . . . . . . . . . 229 | |||
11.4.1. File System Replication . . . . . . . . . . . . . . 229 | 11.4.1. File System Replication . . . . . . . . . . . . . . 230 | |||
11.4.2. File System Migration . . . . . . . . . . . . . . . 230 | 11.4.2. File System Migration . . . . . . . . . . . . . . . 230 | |||
11.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 231 | 11.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 232 | |||
11.5. Location Entries and Server Identity . . . . . . . . . . 233 | 11.5. Location Entries and Server Identity . . . . . . . . . . 233 | |||
11.6. Additional Client-side Considerations . . . . . . . . . 233 | 11.6. Additional Client-side Considerations . . . . . . . . . 234 | |||
11.7. Effecting File System Transitions . . . . . . . . . . . 234 | 11.7. Effecting File System Transitions . . . . . . . . . . . 234 | |||
11.7.1. File System Transitions and Simultaneous Access . . 235 | 11.7.1. File System Transitions and Simultaneous Access . . 236 | |||
11.7.2. Simultaneous Use and Transparent Transitions . . . . 236 | 11.7.2. Simultaneous Use and Transparent Transitions . . . . 236 | |||
11.7.3. Filehandles and File System Transitions . . . . . . 239 | 11.7.3. Filehandles and File System Transitions . . . . . . 239 | |||
11.7.4. Fileids and File System Transitions . . . . . . . . 239 | 11.7.4. Fileids and File System Transitions . . . . . . . . 239 | |||
11.7.5. Fsids and File System Transitions . . . . . . . . . 240 | 11.7.5. Fsids and File System Transitions . . . . . . . . . 241 | |||
11.7.6. The Change Attribute and File System Transitions . . 241 | 11.7.6. The Change Attribute and File System Transitions . . 241 | |||
11.7.7. Lock State and File System Transitions . . . . . . . 241 | 11.7.7. Lock State and File System Transitions . . . . . . . 242 | |||
11.7.8. Write Verifiers and File System Transitions . . . . 246 | 11.7.8. Write Verifiers and File System Transitions . . . . 246 | |||
11.7.9. Readdir Cookies and Verifiers and File System | 11.7.9. Readdir Cookies and Verifiers and File System | |||
Transitions . . . . . . . . . . . . . . . . . . . . 246 | Transitions . . . . . . . . . . . . . . . . . . . . 246 | |||
11.7.10. File System Data and File System Transitions . . . . 246 | 11.7.10. File System Data and File System Transitions . . . . 246 | |||
11.8. Effecting File System Referrals . . . . . . . . . . . . 248 | 11.8. Effecting File System Referrals . . . . . . . . . . . . 248 | |||
11.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 248 | 11.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 248 | |||
11.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 252 | 11.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 252 | |||
11.9. The Attribute fs_locations . . . . . . . . . . . . . . . 254 | 11.9. The Attribute fs_locations . . . . . . . . . . . . . . . 255 | |||
11.10. The Attribute fs_locations_info . . . . . . . . . . . . 257 | 11.10. The Attribute fs_locations_info . . . . . . . . . . . . 258 | |||
11.10.1. The fs_locations_server4 Structure . . . . . . . . . 261 | 11.10.1. The fs_locations_server4 Structure . . . . . . . . . 261 | |||
11.10.2. The fs_locations_info4 Structure . . . . . . . . . . 266 | 11.10.2. The fs_locations_info4 Structure . . . . . . . . . . 267 | |||
11.10.3. The fs_locations_item4 Structure . . . . . . . . . . 267 | 11.10.3. The fs_locations_item4 Structure . . . . . . . . . . 268 | |||
11.11. The Attribute fs_status . . . . . . . . . . . . . . . . 269 | 11.11. The Attribute fs_status . . . . . . . . . . . . . . . . 269 | |||
12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 273 | 12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 273 | |||
12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 273 | 12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 273 | |||
12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 274 | 12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 274 | |||
12.2.1. Metadata . . . . . . . . . . . . . . . . . . . . . . 275 | 12.2.1. Metadata . . . . . . . . . . . . . . . . . . . . . . 275 | |||
12.2.2. Metadata Server . . . . . . . . . . . . . . . . . . 275 | 12.2.2. Metadata Server . . . . . . . . . . . . . . . . . . 275 | |||
12.2.3. pNFS Client . . . . . . . . . . . . . . . . . . . . 275 | 12.2.3. pNFS Client . . . . . . . . . . . . . . . . . . . . 275 | |||
12.2.4. Storage Device . . . . . . . . . . . . . . . . . . . 275 | 12.2.4. Storage Device . . . . . . . . . . . . . . . . . . . 275 | |||
12.2.5. Storage Protocol . . . . . . . . . . . . . . . . . . 276 | 12.2.5. Storage Protocol . . . . . . . . . . . . . . . . . . 276 | |||
12.2.6. Control Protocol . . . . . . . . . . . . . . . . . . 276 | 12.2.6. Control Protocol . . . . . . . . . . . . . . . . . . 276 | |||
skipping to change at page 57, line 27 | skipping to change at page 57, line 27 | |||
However, because of request pipelining, the requester may have | However, because of request pipelining, the requester may have | |||
active requests in flight reflecting prior values, therefore the | active requests in flight reflecting prior values, therefore the | |||
replier must not immediately require the requester to comply. | replier must not immediately require the requester to comply. | |||
o The enforced highest_slotid indicates the highest slot ID the | o The enforced highest_slotid indicates the highest slot ID the | |||
requester is permitted to use on a subsequent SEQUENCE or | requester is permitted to use on a subsequent SEQUENCE or | |||
CB_SEQUENCE operation. The replier's enforced highest_slotid | CB_SEQUENCE operation. The replier's enforced highest_slotid | |||
SHOULD be no less than the highest_slotid the requester indicated | SHOULD be no less than the highest_slotid the requester indicated | |||
in the SEQUENCE or CB_SEQUENCE arguments. | in the SEQUENCE or CB_SEQUENCE arguments. | |||
If a replier detects the requester is being intransigent, i.e. it | A requester can be intransigent with respect to lowering its | |||
fails in a series of requests to honor the target highest_slotid | highest_slotid argument to a Sequence operation, i.e. the | |||
even though the replier knows there are no outstanding requests | requester continues to ignore the target highest_slotid in the | |||
with higher slot ids, it MAY take more forceful action. When | response to a Sequence operation, and continues to set its | |||
faced with intransigence, the replier MAY reply with a new | highest_slotid argument to be higher than the target | |||
enforced highest_slotid that is less than its previous enforced | highest_slotid. This can be considered particularily egregious | |||
highest_slotid. Thereafter, if the requester continues to send | behavior when the replier knows there are no outstanding requests | |||
requests with a highest_slotid that is greater than the replier's | with slot IDs higher than its target highest_slotid. When faced | |||
new enforced highest_slotid the server MAY return | with such intransigence, the replier is free to take more forceful | |||
NFS4ERR_BAD_HIGHSLOT, unless the slot ID in the request is greater | action, and MAY reply with a new enforced highest_slotid that is | |||
than the new enforced highest_slotid, and the request is a retry. | less than its previous enforced highest_slotid. Thereafter, if | |||
the requester continues to send requests with a highest_slotid | ||||
that is greater than the replier's new enforced highest_slotid, | ||||
the server MAY return NFS4ERR_BAD_HIGH_SLOT, unless the slot ID in | ||||
the request is greater than the new enforced highest_slotid, and | ||||
the request is a retry. | ||||
The replier SHOULD retain the slots it wants to retire until the | The replier SHOULD retain the slots it wants to retire until the | |||
requester sends a request with a highest_slotid less than or equal | requester sends a request with a highest_slotid less than or equal | |||
to the replier's new enforced highest_slotid. Also if a request | to the replier's new enforced highest_slotid. | |||
is received with a slot that is higher than the new enforced | ||||
highest_slotid, and the sequence ID is one higher than what is in | The requester can also be intransigent with respect to sending | |||
the slot's reply cache, then the server can both retire the slot | non-retry requests that have a slot ID that exceeds the replier's | |||
and return NFS4ERR_BADSLOT (however the server MUST NOT do one and | highest_slotid. Once the replier has forcibly lowered the | |||
not the other). (The reason it is safe to retire the slot is | enforced highest_slotid, the requester is only allowed to send | |||
because that by using the next sequence ID, the requester is | retries on slots that exceed the replier's highest_slotid. If a | |||
indicating it has received the previous reply for the slot.) Once | request is received with a slot ID that is higher than the new | |||
the replier has forcibly lowered the enforced highest_slotid, the | enforced highest_slotid, and the sequence ID is one higher than | |||
requester is only allowed to send retries to the to-be-retired | what is in the slot's reply cache, then the server can both retire | |||
slots. | the slot and return NFS4ERR_BADSLOT (however the server MUST NOT | |||
do one and not the other). The reason it is safe to retire the | ||||
slot is because that by using the next sequence ID, the requester | ||||
is indicating it has received the previous reply for the slot. | ||||
o The requester SHOULD use the lowest available slot when issuing a | o The requester SHOULD use the lowest available slot when issuing a | |||
new request. This way, the replier may be able to retire slot | new request. This way, the replier may be able to retire slot | |||
entries faster. However, where the replier is actively adjusting | entries faster. However, where the replier is actively adjusting | |||
its granted highest_slotid, it will not be able to use only the | its granted highest_slotid, it will not be able to use only the | |||
receipt of the slot ID and highest_slotid in the request. Neither | receipt of the slot ID and highest_slotid in the request. Neither | |||
the slot ID nor the highest_slotid used in a request may reflect | the slot ID nor the highest_slotid used in a request may reflect | |||
the replier's current idea of the requester's session limit, | the replier's current idea of the requester's session limit, | |||
because the request may have been sent from the requester before | because the request may have been sent from the requester before | |||
the update was received. Therefore, in the downward adjustment | the update was received. Therefore, in the downward adjustment | |||
skipping to change at page 513, line 15 | skipping to change at page 513, line 15 | |||
the header will be ca_maxrequestsize. If a requester sends a | the header will be ca_maxrequestsize. If a requester sends a | |||
request that exceeds ca_maxrequestsize, the error | request that exceeds ca_maxrequestsize, the error | |||
NFS4ERR_REQ_TOO_BIG will be returned per the description in | NFS4ERR_REQ_TOO_BIG will be returned per the description in | |||
Section 2.10.6.4. For each channel, the server MAY decrease | Section 2.10.6.4. For each channel, the server MAY decrease | |||
this value but MUST NOT increase it. | this value but MUST NOT increase it. | |||
ca_maxresponsesize: | ca_maxresponsesize: | |||
The maximum size of a COMPOUND or CB_COMPOUND reply that the | The maximum size of a COMPOUND or CB_COMPOUND reply that the | |||
requester will accept from the replier including RPC headers | requester will accept from the replier including RPC headers | |||
(see the ca_maxrequestsize definition). For each channel, | (see the ca_maxrequestsize definition). For each channel, the | |||
server MAY decrease this value, but MUST NOT increase it. | server MAY decrease this value, but MUST NOT increase it. | |||
However, if the client selects a value for ca_maxresponsesize | However, if the client selects a value for ca_maxresponsesize | |||
such that a replier on a channel could never send a response, | such that a replier on a channel could never send a response, | |||
the server SHOULD return NFS4ERR_TOOSMALL in the CREATE_SESSION | the server SHOULD return NFS4ERR_TOOSMALL in the CREATE_SESSION | |||
reply. After the session is created, if a requester sends a | reply. After the session is created, if a requester sends a | |||
request for which the size of the reply would exceed this | request for which the size of the reply would exceed this | |||
value, the replier will return NFS4ERR_REP_TOO_BIG, per the | value, the replier will return NFS4ERR_REP_TOO_BIG, per the | |||
description in Section 2.10.6.4. | description in Section 2.10.6.4. | |||
ca_maxresponsesize_cached: | ca_maxresponsesize_cached: | |||
Like ca_maxresponsesize, but the maximum size of a reply that | Like ca_maxresponsesize, but the maximum size of a reply that | |||
will be stored in the reply cache (Section 2.10.6.1). For each | will be stored in the reply cache (Section 2.10.6.1). For each | |||
channel, server MAY decrease this value, but MUST NOT increase | channel, the server MAY decrease this value, but MUST NOT | |||
it. If the reply to CREATE_SESSION has the value | increase it. If the reply to CREATE_SESSION has the value | |||
ca_maxresponsesize_cached less than the value | ca_maxresponsesize_cached less than the value | |||
ca_maxresponsesize, then this is an indication to the requester | ca_maxresponsesize, then this is an indication to the requester | |||
on the channel that it needs to be selective about which | on the channel that it needs to be selective about which | |||
replies it directs the replier to cache; for example large | replies it directs the replier to cache; for example large | |||
replies from nonidempotent operations (e.g. COMPOUND requests | replies from nonidempotent operations (e.g. COMPOUND requests | |||
with a READ operation), should not be cached. The requester | with a READ operation), should not be cached. The requester | |||
decides which replies to cache via an argument to the SEQUENCE | decides which replies to cache via an argument to the SEQUENCE | |||
(the sa_cachethis field, see Section 18.46) or CB_SEQUENCE (the | (the sa_cachethis field, see Section 18.46) or CB_SEQUENCE (the | |||
csa_cachethis field, see Section 20.9) operations. After the | csa_cachethis field, see Section 20.9) operations. After the | |||
session is created, if a requester sends a request for which | session is created, if a requester sends a request for which | |||
skipping to change at page 514, line 21 | skipping to change at page 514, line 21 | |||
requests will each be assigned a slot identifier by the | requests will each be assigned a slot identifier by the | |||
requester within the range 0 to ca_maxrequests - 1 inclusive. | requester within the range 0 to ca_maxrequests - 1 inclusive. | |||
For the backchannel, the server MUST NOT change the value the | For the backchannel, the server MUST NOT change the value the | |||
client offers. For the fore channel, the server MAY change the | client offers. For the fore channel, the server MAY change the | |||
requested value. | 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, server MAY decrease this value, | depth (IRD). For each channel, the server MAY decrease this | |||
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 use in any | This is the ONC RPC program number the server MUST use in any | |||
callbacks sent through the backchannel to the client. The server | callbacks sent through the backchannel to the client. The server | |||
MUST specify an ONC RPC program number equal to csa_cb_program and | MUST specify an ONC RPC program number equal to csa_cb_program and | |||
an ONC RPC version number equal to 4 in callbacks sent to the | an ONC RPC version number equal to 4 in callbacks sent to the | |||
client. If a CB_COMPOUND is sent to the client, the server MUST | client. If a CB_COMPOUND is sent to the client, the server MUST | |||
use a minor version number of 1. There is no corresponding | use a minor version number of 1. There is no corresponding | |||
result. | result. | |||
End of changes. 41 change blocks. | ||||
93 lines changed or deleted | 101 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/ |