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/