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/