draft-ietf-nfsv4-rfc3530bis-06.txt | draft-ietf-nfsv4-rfc3530bis-07.txt | |||
---|---|---|---|---|
NFSv4 T. Haynes | NFSv4 T. Haynes | |||
Internet-Draft D. Noveck | Internet-Draft D. Noveck | |||
Intended status: Standards Track Editors | Intended status: Standards Track Editors | |||
Expires: August 20, 2011 February 16, 2011 | Expires: August 31, 2011 February 27, 2011 | |||
NFS Version 4 Protocol | NFS Version 4 Protocol | |||
draft-ietf-nfsv4-rfc3530bis-06.txt | draft-ietf-nfsv4-rfc3530bis-07.txt | |||
Abstract | Abstract | |||
The Network File System (NFS) version 4 is a distributed filesystem | The Network File System (NFS) version 4 is a distributed filesystem | |||
protocol which owes heritage to NFS protocol version 2, RFC 1094, and | protocol which owes heritage to NFS protocol version 2, RFC 1094, and | |||
version 3, RFC 1813. Unlike earlier versions, the NFS version 4 | version 3, RFC 1813. Unlike earlier versions, the NFS version 4 | |||
protocol supports traditional file access while integrating support | protocol supports traditional file access while integrating support | |||
for file locking and the mount protocol. In addition, support for | for file locking and the mount protocol. In addition, support for | |||
strong security (and its negotiation), compound operations, client | strong security (and its negotiation), compound operations, client | |||
caching, and internationalization have been added. Of course, | caching, and internationalization have been added. Of course, | |||
skipping to change at page 2, line 8 | skipping to change at page 2, line 8 | |||
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 August 20, 2011. | This Internet-Draft will expire on August 31, 2011. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2011 IETF Trust and the persons identified as the | Copyright (c) 2011 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 4, line 10 | skipping to change at page 4, line 10 | |||
5.6. REQUIRED Attributes - List and Definition References . . 40 | 5.6. REQUIRED Attributes - List and Definition References . . 40 | |||
5.7. RECOMMENDED Attributes - List and Definition | 5.7. RECOMMENDED Attributes - List and Definition | |||
References . . . . . . . . . . . . . . . . . . . . . . . 41 | References . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 42 | 5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 42 | |||
5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 42 | 5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 42 | |||
5.8.2. Definitions of Uncategorized RECOMMENDED | 5.8.2. Definitions of Uncategorized RECOMMENDED | |||
Attributes . . . . . . . . . . . . . . . . . . . . . 44 | Attributes . . . . . . . . . . . . . . . . . . . . . 44 | |||
5.9. Interpreting owner and owner_group . . . . . . . . . . . 50 | 5.9. Interpreting owner and owner_group . . . . . . . . . . . 50 | |||
5.10. Character Case Attributes . . . . . . . . . . . . . . . 53 | 5.10. Character Case Attributes . . . . . . . . . . . . . . . 53 | |||
6. Access Control Attributes . . . . . . . . . . . . . . . . . . 53 | 6. Access Control Attributes . . . . . . . . . . . . . . . . . . 53 | |||
6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
6.2. File Attributes Discussion . . . . . . . . . . . . . . . 54 | 6.2. File Attributes Discussion . . . . . . . . . . . . . . . 54 | |||
6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 54 | 6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 54 | |||
6.2.2. Attribute 33: mode . . . . . . . . . . . . . . . . . 68 | 6.2.2. Attribute 33: mode . . . . . . . . . . . . . . . . . 68 | |||
6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 69 | 6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 69 | |||
6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 69 | 6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 69 | |||
6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 70 | 6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 70 | |||
6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 71 | 6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 71 | |||
6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 71 | 6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 72 | |||
6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 72 | 6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 73 | |||
6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 73 | 6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 73 | |||
7. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 74 | 7. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 75 | |||
7.1. Location Attributes . . . . . . . . . . . . . . . . . . 75 | 7.1. Location Attributes . . . . . . . . . . . . . . . . . . 75 | |||
7.2. File System Presence or Absence . . . . . . . . . . . . 75 | 7.2. File System Presence or Absence . . . . . . . . . . . . 76 | |||
7.3. Getting Attributes for an Absent File System . . . . . . 76 | 7.3. Getting Attributes for an Absent File System . . . . . . 77 | |||
7.3.1. GETATTR Within an Absent File System . . . . . . . . 76 | 7.3.1. GETATTR Within an Absent File System . . . . . . . . 77 | |||
7.3.2. READDIR and Absent File Systems . . . . . . . . . . 77 | 7.3.2. READDIR and Absent File Systems . . . . . . . . . . 78 | |||
7.4. Uses of Location Information . . . . . . . . . . . . . . 78 | 7.4. Uses of Location Information . . . . . . . . . . . . . . 78 | |||
7.4.1. File System Replication . . . . . . . . . . . . . . 79 | 7.4.1. File System Replication . . . . . . . . . . . . . . 79 | |||
7.4.2. File System Migration . . . . . . . . . . . . . . . 79 | 7.4.2. File System Migration . . . . . . . . . . . . . . . 80 | |||
7.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 80 | 7.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 81 | |||
7.5. Location Entries and Server Identity . . . . . . . . . . 81 | 7.5. Location Entries and Server Identity . . . . . . . . . . 81 | |||
7.6. Additional Client-Side Considerations . . . . . . . . . 81 | 7.6. Additional Client-Side Considerations . . . . . . . . . 82 | |||
7.7. Effecting File System Transitions . . . . . . . . . . . 82 | 7.7. Effecting File System Transitions . . . . . . . . . . . 83 | |||
7.7.1. File System Transitions and Simultaneous Access . . 84 | 7.7.1. File System Transitions and Simultaneous Access . . 84 | |||
7.7.2. Filehandles and File System Transitions . . . . . . 84 | 7.7.2. Filehandles and File System Transitions . . . . . . 84 | |||
7.7.3. Fileids and File System Transitions . . . . . . . . 84 | 7.7.3. Fileids and File System Transitions . . . . . . . . 85 | |||
7.7.4. Fsids and File System Transitions . . . . . . . . . 86 | 7.7.4. Fsids and File System Transitions . . . . . . . . . 86 | |||
7.7.5. The Change Attribute and File System Transitions . . 86 | 7.7.5. The Change Attribute and File System Transitions . . 86 | |||
7.7.6. Lock State and File System Transitions . . . . . . . 86 | 7.7.6. Lock State and File System Transitions . . . . . . . 87 | |||
7.7.7. Write Verifiers and File System Transitions . . . . 88 | 7.7.7. Write Verifiers and File System Transitions . . . . 89 | |||
7.7.8. Readdir Cookies and Verifiers and File System | 7.7.8. Readdir Cookies and Verifiers and File System | |||
Transitions . . . . . . . . . . . . . . . . . . . . 89 | Transitions . . . . . . . . . . . . . . . . . . . . 89 | |||
7.7.9. File System Data and File System Transitions . . . . 89 | 7.7.9. File System Data and File System Transitions . . . . 90 | |||
7.8. Effecting File System Referrals . . . . . . . . . . . . 90 | 7.8. Effecting File System Referrals . . . . . . . . . . . . 91 | |||
7.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 91 | 7.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 91 | |||
7.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 94 | 7.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 95 | |||
7.9. The Attribute fs_locations . . . . . . . . . . . . . . . 97 | 7.9. The Attribute fs_locations . . . . . . . . . . . . . . . 98 | |||
7.9.1. Inferring Transition Modes . . . . . . . . . . . . . 99 | 7.9.1. Inferring Transition Modes . . . . . . . . . . . . . 99 | |||
8. NFS Server Name Space . . . . . . . . . . . . . . . . . . . . 100 | 8. NFS Server Name Space . . . . . . . . . . . . . . . . . . . . 101 | |||
8.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 100 | 8.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 101 | |||
8.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 100 | 8.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 101 | |||
8.3. Server Pseudo Filesystem . . . . . . . . . . . . . . . . 101 | 8.3. Server Pseudo Filesystem . . . . . . . . . . . . . . . . 101 | |||
8.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 101 | 8.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 102 | |||
8.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 101 | 8.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 102 | |||
8.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 102 | 8.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 102 | |||
8.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 102 | 8.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 103 | |||
8.8. Security Policy and Name Space Presentation . . . . . . 103 | 8.8. Security Policy and Name Space Presentation . . . . . . 103 | |||
9. File Locking and Share Reservations . . . . . . . . . . . . . 103 | 9. File Locking and Share Reservations . . . . . . . . . . . . . 104 | |||
9.1. Locking . . . . . . . . . . . . . . . . . . . . . . . . 104 | 9.1. Locking . . . . . . . . . . . . . . . . . . . . . . . . 105 | |||
9.1.1. Client ID . . . . . . . . . . . . . . . . . . . . . 104 | 9.1.1. Client ID . . . . . . . . . . . . . . . . . . . . . 105 | |||
9.1.2. Server Release of Clientid . . . . . . . . . . . . . 107 | 9.1.2. Server Release of Clientid . . . . . . . . . . . . . 108 | |||
9.1.3. lock_owner and stateid Definition . . . . . . . . . 108 | 9.1.3. lock_owner and stateid Definition . . . . . . . . . 109 | |||
9.1.4. Use of the stateid and Locking . . . . . . . . . . . 109 | 9.1.4. Use of the stateid and Locking . . . . . . . . . . . 110 | |||
9.1.5. Sequencing of Lock Requests . . . . . . . . . . . . 112 | 9.1.5. Sequencing of Lock Requests . . . . . . . . . . . . 112 | |||
9.1.6. Recovery from Replayed Requests . . . . . . . . . . 113 | 9.1.6. Recovery from Replayed Requests . . . . . . . . . . 113 | |||
9.1.7. Releasing lock_owner State . . . . . . . . . . . . . 113 | 9.1.7. Releasing lock_owner State . . . . . . . . . . . . . 114 | |||
9.1.8. Use of Open Confirmation . . . . . . . . . . . . . . 113 | 9.1.8. Use of Open Confirmation . . . . . . . . . . . . . . 114 | |||
9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 114 | 9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 115 | |||
9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 115 | 9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 116 | |||
9.4. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 115 | 9.4. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 116 | |||
9.5. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 116 | 9.5. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 117 | |||
9.6. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 117 | 9.6. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 118 | |||
9.6.1. Client Failure and Recovery . . . . . . . . . . . . 117 | 9.6.1. Client Failure and Recovery . . . . . . . . . . . . 118 | |||
9.6.2. Server Failure and Recovery . . . . . . . . . . . . 118 | 9.6.2. Server Failure and Recovery . . . . . . . . . . . . 119 | |||
9.6.3. Network Partitions and Recovery . . . . . . . . . . 120 | 9.6.3. Network Partitions and Recovery . . . . . . . . . . 120 | |||
9.7. Recovery from a Lock Request Timeout or Abort . . . . . 123 | 9.7. Recovery from a Lock Request Timeout or Abort . . . . . 124 | |||
9.8. Server Revocation of Locks . . . . . . . . . . . . . . . 124 | 9.8. Server Revocation of Locks . . . . . . . . . . . . . . . 124 | |||
9.9. Share Reservations . . . . . . . . . . . . . . . . . . . 125 | 9.9. Share Reservations . . . . . . . . . . . . . . . . . . . 125 | |||
9.10. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 126 | 9.10. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 126 | |||
9.10.1. Close and Retention of State Information . . . . . . 126 | 9.10.1. Close and Retention of State Information . . . . . . 127 | |||
9.11. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 127 | 9.11. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 127 | |||
9.12. Short and Long Leases . . . . . . . . . . . . . . . . . 128 | 9.12. Short and Long Leases . . . . . . . . . . . . . . . . . 128 | |||
9.13. Clocks, Propagation Delay, and Calculating Lease | 9.13. Clocks, Propagation Delay, and Calculating Lease | |||
Expiration . . . . . . . . . . . . . . . . . . . . . . . 128 | Expiration . . . . . . . . . . . . . . . . . . . . . . . 129 | |||
9.14. Migration, Replication and State . . . . . . . . . . . . 129 | 9.14. Migration, Replication and State . . . . . . . . . . . . 129 | |||
9.14.1. Migration and State . . . . . . . . . . . . . . . . 129 | 9.14.1. Migration and State . . . . . . . . . . . . . . . . 130 | |||
9.14.2. Replication and State . . . . . . . . . . . . . . . 130 | 9.14.2. Replication and State . . . . . . . . . . . . . . . 130 | |||
9.14.3. Notification of Migrated Lease . . . . . . . . . . . 130 | 9.14.3. Notification of Migrated Lease . . . . . . . . . . . 131 | |||
9.14.4. Migration and the Lease_time Attribute . . . . . . . 131 | 9.14.4. Migration and the Lease_time Attribute . . . . . . . 132 | |||
10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 131 | 10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 132 | |||
10.1. Performance Challenges for Client-Side Caching . . . . . 132 | 10.1. Performance Challenges for Client-Side Caching . . . . . 133 | |||
10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 133 | 10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 134 | |||
10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 134 | 10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 135 | |||
10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 136 | 10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 137 | |||
10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 137 | 10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 138 | |||
10.3.2. Data Caching and File Locking . . . . . . . . . . . 138 | 10.3.2. Data Caching and File Locking . . . . . . . . . . . 139 | |||
10.3.3. Data Caching and Mandatory File Locking . . . . . . 139 | 10.3.3. Data Caching and Mandatory File Locking . . . . . . 140 | |||
10.3.4. Data Caching and File Identity . . . . . . . . . . . 140 | 10.3.4. Data Caching and File Identity . . . . . . . . . . . 141 | |||
10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 141 | 10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 142 | |||
10.4.1. Open Delegation and Data Caching . . . . . . . . . . 143 | 10.4.1. Open Delegation and Data Caching . . . . . . . . . . 144 | |||
10.4.2. Open Delegation and File Locks . . . . . . . . . . . 144 | 10.4.2. Open Delegation and File Locks . . . . . . . . . . . 145 | |||
10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 145 | 10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 146 | |||
10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 148 | 10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 149 | |||
10.4.5. Clients that Fail to Honor Delegation Recalls . . . 149 | 10.4.5. Clients that Fail to Honor Delegation Recalls . . . 151 | |||
10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 150 | 10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 151 | |||
10.5. Data Caching and Revocation . . . . . . . . . . . . . . 151 | 10.5. Data Caching and Revocation . . . . . . . . . . . . . . 152 | |||
10.5.1. Revocation Recovery for Write Open Delegation . . . 151 | 10.5.1. Revocation Recovery for Write Open Delegation . . . 152 | |||
10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 152 | 10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 153 | |||
10.7. Data and Metadata Caching and Memory Mapped Files . . . 154 | 10.7. Data and Metadata Caching and Memory Mapped Files . . . 155 | |||
10.8. Name Caching . . . . . . . . . . . . . . . . . . . . . . 156 | 10.8. Name Caching . . . . . . . . . . . . . . . . . . . . . . 157 | |||
10.9. Directory Caching . . . . . . . . . . . . . . . . . . . 157 | 10.9. Directory Caching . . . . . . . . . . . . . . . . . . . 158 | |||
11. Minor Versioning . . . . . . . . . . . . . . . . . . . . . . 158 | 11. Minor Versioning . . . . . . . . . . . . . . . . . . . . . . 159 | |||
12. Internationalization . . . . . . . . . . . . . . . . . . . . 161 | 12. Internationalization . . . . . . . . . . . . . . . . . . . . 162 | |||
12.1. Use of UTF-8 . . . . . . . . . . . . . . . . . . . . . . 162 | 12.1. Use of UTF-8 . . . . . . . . . . . . . . . . . . . . . . 163 | |||
12.1.1. Relation to Stringprep . . . . . . . . . . . . . . . 162 | 12.1.1. Relation to Stringprep . . . . . . . . . . . . . . . 163 | |||
12.1.2. Normalization, Equivalence, and Confusability . . . 163 | 12.1.2. Normalization, Equivalence, and Confusability . . . 164 | |||
12.2. String Type Overview . . . . . . . . . . . . . . . . . . 165 | 12.2. String Type Overview . . . . . . . . . . . . . . . . . . 166 | |||
12.2.1. Overall String Class Divisions . . . . . . . . . . . 166 | 12.2.1. Overall String Class Divisions . . . . . . . . . . . 167 | |||
12.2.2. Divisions by Typedef Parent types . . . . . . . . . 167 | 12.2.2. Divisions by Typedef Parent types . . . . . . . . . 168 | |||
12.2.3. Individual Types and Their Handling . . . . . . . . 167 | 12.2.3. Individual Types and Their Handling . . . . . . . . 168 | |||
12.3. Errors Related to Strings . . . . . . . . . . . . . . . 169 | 12.3. Errors Related to Strings . . . . . . . . . . . . . . . 170 | |||
12.4. Types with Pre-processing to Resolve Mixture Issues . . 170 | 12.4. Types with Pre-processing to Resolve Mixture Issues . . 171 | |||
12.4.1. Processing of Principal Strings . . . . . . . . . . 170 | 12.4.1. Processing of Principal Strings . . . . . . . . . . 171 | |||
12.4.2. Processing of Server Id Strings . . . . . . . . . . 170 | 12.4.2. Processing of Server Id Strings . . . . . . . . . . 171 | |||
12.5. String Types without Internationalization Processing . . 171 | 12.5. String Types without Internationalization Processing . . 172 | |||
12.6. Types with Processing Defined by Other Internet Areas . 171 | 12.6. Types with Processing Defined by Other Internet Areas . 172 | |||
12.7. String Types with NFS-specific Processing . . . . . . . 172 | 12.7. String Types with NFS-specific Processing . . . . . . . 173 | |||
12.7.1. Handling of File Name Components . . . . . . . . . . 173 | 12.7.1. Handling of File Name Components . . . . . . . . . . 174 | |||
12.7.2. Processing of Link Text . . . . . . . . . . . . . . 182 | 12.7.2. Processing of Link Text . . . . . . . . . . . . . . 183 | |||
12.7.3. Processing of Principal Prefixes . . . . . . . . . . 183 | 12.7.3. Processing of Principal Prefixes . . . . . . . . . . 184 | |||
13. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 184 | 13. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 185 | |||
13.1. Error Definitions . . . . . . . . . . . . . . . . . . . 184 | 13.1. Error Definitions . . . . . . . . . . . . . . . . . . . 185 | |||
13.1.1. General Errors . . . . . . . . . . . . . . . . . . . 186 | 13.1.1. General Errors . . . . . . . . . . . . . . . . . . . 187 | |||
13.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 187 | 13.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 188 | |||
13.1.3. Compound Structure Errors . . . . . . . . . . . . . 188 | 13.1.3. Compound Structure Errors . . . . . . . . . . . . . 189 | |||
13.1.4. File System Errors . . . . . . . . . . . . . . . . . 189 | 13.1.4. File System Errors . . . . . . . . . . . . . . . . . 190 | |||
13.1.5. State Management Errors . . . . . . . . . . . . . . 191 | 13.1.5. State Management Errors . . . . . . . . . . . . . . 192 | |||
13.1.6. Security Errors . . . . . . . . . . . . . . . . . . 192 | 13.1.6. Security Errors . . . . . . . . . . . . . . . . . . 193 | |||
13.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 192 | 13.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 193 | |||
13.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 193 | 13.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 194 | |||
13.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 194 | 13.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 195 | |||
13.1.10. Client Management Errors . . . . . . . . . . . . . . 195 | 13.1.10. Client Management Errors . . . . . . . . . . . . . . 196 | |||
13.1.11. Attribute Handling Errors . . . . . . . . . . . . . 195 | 13.1.11. Attribute Handling Errors . . . . . . . . . . . . . 196 | |||
13.2. Operations and their valid errors . . . . . . . . . . . 196 | 13.2. Operations and their valid errors . . . . . . . . . . . 197 | |||
13.3. Callback operations and their valid errors . . . . . . . 204 | 13.3. Callback operations and their valid errors . . . . . . . 205 | |||
13.4. Errors and the operations that use them . . . . . . . . 204 | 13.4. Errors and the operations that use them . . . . . . . . 205 | |||
14. NFS version 4 Requests . . . . . . . . . . . . . . . . . . . 208 | 14. NFS version 4 Requests . . . . . . . . . . . . . . . . . . . 209 | |||
14.1. Compound Procedure . . . . . . . . . . . . . . . . . . . 209 | 14.1. Compound Procedure . . . . . . . . . . . . . . . . . . . 210 | |||
14.2. Evaluation of a Compound Request . . . . . . . . . . . . 209 | 14.2. Evaluation of a Compound Request . . . . . . . . . . . . 210 | |||
14.3. Synchronous Modifying Operations . . . . . . . . . . . . 210 | 14.3. Synchronous Modifying Operations . . . . . . . . . . . . 211 | |||
14.4. Operation Values . . . . . . . . . . . . . . . . . . . . 211 | 14.4. Operation Values . . . . . . . . . . . . . . . . . . . . 212 | |||
15. NFS version 4 Procedures . . . . . . . . . . . . . . . . . . 211 | 15. NFS version 4 Procedures . . . . . . . . . . . . . . . . . . 212 | |||
15.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 211 | 15.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 212 | |||
15.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 211 | 15.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 212 | |||
15.3. Operation 3: ACCESS - Check Access Rights . . . . . . . 214 | 15.3. Operation 3: ACCESS - Check Access Rights . . . . . . . 215 | |||
15.4. Operation 4: CLOSE - Close File . . . . . . . . . . . . 217 | 15.4. Operation 4: CLOSE - Close File . . . . . . . . . . . . 218 | |||
15.5. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 218 | 15.5. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 219 | |||
15.6. Operation 6: CREATE - Create a Non-Regular File Object . 220 | 15.6. Operation 6: CREATE - Create a Non-Regular File Object . 221 | |||
15.7. Operation 7: DELEGPURGE - Purge Delegations Awaiting | 15.7. Operation 7: DELEGPURGE - Purge Delegations Awaiting | |||
Recovery . . . . . . . . . . . . . . . . . . . . . . . . 223 | Recovery . . . . . . . . . . . . . . . . . . . . . . . . 224 | |||
15.8. Operation 8: DELEGRETURN - Return Delegation . . . . . . 224 | 15.8. Operation 8: DELEGRETURN - Return Delegation . . . . . . 225 | |||
15.9. Operation 9: GETATTR - Get Attributes . . . . . . . . . 224 | 15.9. Operation 9: GETATTR - Get Attributes . . . . . . . . . 225 | |||
15.10. Operation 10: GETFH - Get Current Filehandle . . . . . . 225 | 15.10. Operation 10: GETFH - Get Current Filehandle . . . . . . 226 | |||
15.11. Operation 11: LINK - Create Link to a File . . . . . . . 226 | 15.11. Operation 11: LINK - Create Link to a File . . . . . . . 227 | |||
15.12. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 228 | 15.12. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 229 | |||
15.13. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 232 | 15.13. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 233 | |||
15.14. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 233 | 15.14. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 234 | |||
15.15. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 235 | 15.15. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 236 | |||
15.16. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 236 | 15.16. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 237 | |||
15.17. Operation 17: NVERIFY - Verify Difference in | 15.17. Operation 17: NVERIFY - Verify Difference in | |||
Attributes . . . . . . . . . . . . . . . . . . . . . . . 237 | Attributes . . . . . . . . . . . . . . . . . . . . . . . 238 | |||
15.18. Operation 18: OPEN - Open a Regular File . . . . . . . . 238 | 15.18. Operation 18: OPEN - Open a Regular File . . . . . . . . 239 | |||
15.19. Operation 19: OPENATTR - Open Named Attribute | 15.19. Operation 19: OPENATTR - Open Named Attribute | |||
Directory . . . . . . . . . . . . . . . . . . . . . . . 248 | Directory . . . . . . . . . . . . . . . . . . . . . . . 249 | |||
15.20. Operation 20: OPEN_CONFIRM - Confirm Open . . . . . . . 249 | 15.20. Operation 20: OPEN_CONFIRM - Confirm Open . . . . . . . 250 | |||
15.21. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 251 | 15.21. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 252 | |||
15.22. Operation 22: PUTFH - Set Current Filehandle . . . . . . 252 | 15.22. Operation 22: PUTFH - Set Current Filehandle . . . . . . 253 | |||
15.23. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 252 | 15.23. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 253 | |||
15.24. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 254 | 15.24. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 255 | |||
15.25. Operation 25: READ - Read from File . . . . . . . . . . 254 | 15.25. Operation 25: READ - Read from File . . . . . . . . . . 255 | |||
15.26. Operation 26: READDIR - Read Directory . . . . . . . . . 257 | 15.26. Operation 26: READDIR - Read Directory . . . . . . . . . 258 | |||
15.27. Operation 27: READLINK - Read Symbolic Link . . . . . . 260 | 15.27. Operation 27: READLINK - Read Symbolic Link . . . . . . 261 | |||
15.28. Operation 28: REMOVE - Remove Filesystem Object . . . . 261 | 15.28. Operation 28: REMOVE - Remove Filesystem Object . . . . 262 | |||
15.29. Operation 29: RENAME - Rename Directory Entry . . . . . 263 | 15.29. Operation 29: RENAME - Rename Directory Entry . . . . . 264 | |||
15.30. Operation 30: RENEW - Renew a Lease . . . . . . . . . . 265 | 15.30. Operation 30: RENEW - Renew a Lease . . . . . . . . . . 266 | |||
15.31. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 266 | 15.31. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 267 | |||
15.32. Operation 32: SAVEFH - Save Current Filehandle . . . . . 267 | 15.32. Operation 32: SAVEFH - Save Current Filehandle . . . . . 268 | |||
15.33. Operation 33: SECINFO - Obtain Available Security . . . 268 | 15.33. Operation 33: SECINFO - Obtain Available Security . . . 269 | |||
15.34. Operation 34: SETATTR - Set Attributes . . . . . . . . . 271 | 15.34. Operation 34: SETATTR - Set Attributes . . . . . . . . . 272 | |||
15.35. Operation 35: SETCLIENTID - Negotiate Clientid . . . . . 274 | 15.35. Operation 35: SETCLIENTID - Negotiate Clientid . . . . . 275 | |||
15.36. Operation 36: SETCLIENTID_CONFIRM - Confirm Clientid . . 277 | 15.36. Operation 36: SETCLIENTID_CONFIRM - Confirm Clientid . . 278 | |||
15.37. Operation 37: VERIFY - Verify Same Attributes . . . . . 281 | 15.37. Operation 37: VERIFY - Verify Same Attributes . . . . . 282 | |||
15.38. Operation 38: WRITE - Write to File . . . . . . . . . . 282 | 15.38. Operation 38: WRITE - Write to File . . . . . . . . . . 283 | |||
15.39. Operation 39: RELEASE_LOCKOWNER - Release Lockowner | 15.39. Operation 39: RELEASE_LOCKOWNER - Release Lockowner | |||
State . . . . . . . . . . . . . . . . . . . . . . . . . 286 | State . . . . . . . . . . . . . . . . . . . . . . . . . 287 | |||
15.40. Operation 10044: ILLEGAL - Illegal operation . . . . . . 287 | 15.40. Operation 10044: ILLEGAL - Illegal operation . . . . . . 288 | |||
16. NFS version 4 Callback Procedures . . . . . . . . . . . . . . 288 | 16. NFS version 4 Callback Procedures . . . . . . . . . . . . . . 289 | |||
16.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 288 | 16.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 289 | |||
16.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 289 | 16.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 290 | |||
16.2.6. Operation 3: CB_GETATTR - Get Attributes . . . . . . 290 | 16.2.6. Operation 3: CB_GETATTR - Get Attributes . . . . . . 291 | |||
16.2.7. Operation 4: CB_RECALL - Recall an Open Delegation . 291 | 16.2.7. Operation 4: CB_RECALL - Recall an Open Delegation . 292 | |||
16.2.8. Operation 10044: CB_ILLEGAL - Illegal Callback | 16.2.8. Operation 10044: CB_ILLEGAL - Illegal Callback | |||
Operation . . . . . . . . . . . . . . . . . . . . . 292 | Operation . . . . . . . . . . . . . . . . . . . . . 293 | |||
17. Security Considerations . . . . . . . . . . . . . . . . . . . 293 | 17. Security Considerations . . . . . . . . . . . . . . . . . . . 294 | |||
18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 295 | 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 296 | |||
18.1. Named Attribute Definition . . . . . . . . . . . . . . . 295 | 18.1. Named Attribute Definition . . . . . . . . . . . . . . . 296 | |||
18.2. ONC RPC Network Identifiers (netids) . . . . . . . . . . 295 | 18.2. ONC RPC Network Identifiers (netids) . . . . . . . . . . 296 | |||
19. References . . . . . . . . . . . . . . . . . . . . . . . . . 296 | 19. References . . . . . . . . . . . . . . . . . . . . . . . . . 297 | |||
19.1. Normative References . . . . . . . . . . . . . . . . . . 296 | 19.1. Normative References . . . . . . . . . . . . . . . . . . 297 | |||
19.2. Informative References . . . . . . . . . . . . . . . . . 297 | 19.2. Informative References . . . . . . . . . . . . . . . . . 298 | |||
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 299 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 300 | |||
Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 299 | Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 300 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 300 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 301 | |||
1. Introduction | 1. Introduction | |||
1.1. Changes since RFC 3530 | 1.1. Changes since RFC 3530 | |||
This document, together with the companion XDR description document | This document, together with the companion XDR description document | |||
[2], obsoletes RFC 3530 [11] as the authoritative document describing | [2], obsoletes RFC 3530 [11] as the authoritative document describing | |||
NFSv4. It does not introduce any over-the-wire protocol changes, in | NFSv4. It does not introduce any over-the-wire protocol changes, in | |||
the sense that previously valid requests requests remain valid. | the sense that previously valid requests requests remain valid. | |||
However, some requests previously defined as invalid, although not | However, some requests previously defined as invalid, although not | |||
skipping to change at page 47, line 5 | skipping to change at page 47, line 5 | |||
5.8.2.9. Attribute 23: files_total | 5.8.2.9. Attribute 23: files_total | |||
Total file slots on the file system containing this object. | Total file slots on the file system containing this object. | |||
5.8.2.10. Attribute 24: fs_locations | 5.8.2.10. Attribute 24: fs_locations | |||
Locations where this file system may be found. If the server returns | Locations where this file system may be found. If the server returns | |||
NFS4ERR_MOVED as an error, this attribute MUST be supported. | NFS4ERR_MOVED as an error, this attribute MUST be supported. | |||
The server can specify a root path by setting an array of zero path | ||||
compenents. Other than this special case, the server MUST not | ||||
present empty path components to the client. | ||||
5.8.2.11. Attribute 25: hidden | 5.8.2.11. Attribute 25: hidden | |||
TRUE, if the file is considered hidden with respect to the Windows | TRUE, if the file is considered hidden with respect to the Windows | |||
API. | API. | |||
5.8.2.12. Attribute 26: homogeneous | 5.8.2.12. Attribute 26: homogeneous | |||
TRUE, if this object's file system is homogeneous, i.e., all objects | TRUE, if this object's file system is homogeneous, i.e., all objects | |||
in the file system (all objects on the server with the same fsid) | in the file system (all objects on the server with the same fsid) | |||
have common values for all per-file-system attributes. | have common values for all per-file-system attributes. | |||
skipping to change at page 53, line 8 | skipping to change at page 53, line 10 | |||
values changed when no real change to ownership has occurred. | values changed when no real change to ownership has occurred. | |||
The "dns_domain" portion of the owner string is meant to be a DNS | The "dns_domain" portion of the owner string is meant to be a DNS | |||
domain name. For example, user@example.org. Servers should accept | domain name. For example, user@example.org. Servers should accept | |||
as valid a set of users for at least one domain. A server may treat | as valid a set of users for at least one domain. A server may treat | |||
other domains as having no valid translations. A more general | other domains as having no valid translations. A more general | |||
service is provided when a server is capable of accepting users for | service is provided when a server is capable of accepting users for | |||
multiple domains, or for all domains, subject to security | multiple domains, or for all domains, subject to security | |||
constraints. | constraints. | |||
As an implementation guide, both clients and servers may provide a | ||||
means to configure the "dns_domain" portion of the owner string. For | ||||
example, the DNS domain name might be "lab.example.org", but the user | ||||
names are defined in "example.org". In the absence of such a | ||||
configuration, or as a default, the current DNS domain name should be | ||||
the value used for the "dns_domain". | ||||
As mentioned above, it is desirable that a server when accepting a | As mentioned above, it is desirable that a server when accepting a | |||
string of the form user@domain or group@domain in an attribute, | string of the form user@domain or group@domain in an attribute, | |||
return this same string when that corresponding attribute is fetched. | return this same string when that corresponding attribute is fetched. | |||
Internationalization issues (for a general discussion of which see | Internationalization issues (for a general discussion of which see | |||
Section 12) make this impossible and the client needs to take note of | Section 12) make this impossible and the client needs to take note of | |||
the following situations: | the following situations: | |||
o The string representing the domain may be converted to equivalent | o The string representing the domain may be converted to equivalent | |||
U-label, if presented using a form other a a U-label. See | U-label, if presented using a form other a a U-label. See | |||
Section 12.6 for details. | Section 12.6 for details. | |||
o The user or group may be returned in a different form, due to | o The user or group may be returned in a different form, due to | |||
normalization issues, although it will always be a canonically | normalization issues, although it will always be a canonically | |||
equivalent string. See See Section 12.7.3 for details. | equivalent string. See See Section 12.7.3 for details. | |||
In the case where there is no translation available to the client or | In the case where there is no translation available to the client or | |||
server, the attribute value will be constructed without the "@". | server, the attribute value will be constructed without the "@". | |||
Therefore, the absence of the @ from the owner or owner_group | Therefore, the absence of the "@" from the owner or owner_group | |||
attribute signifies that no translation was available at the sender | attribute signifies that no translation was available at the sender | |||
and that the receiver of the attribute should not use that string as | and that the receiver of the attribute should not use that string as | |||
a basis for translation into its own internal format. Even though | a basis for translation into its own internal format. Even though | |||
the attribute value cannot be translated, it may still be useful. In | the attribute value cannot be translated, it may still be useful. In | |||
the case of a client, the attribute string may be used for local | the case of a client, the attribute string may be used for local | |||
display of ownership. | display of ownership. | |||
To provide a greater degree of compatibility with NFSv3, which | To provide a greater degree of compatibility with NFSv3, which | |||
identified users and groups by 32-bit unsigned user identifiers and | identified users and groups by 32-bit unsigned user identifiers and | |||
group identifiers, owner and group strings that consist of decimal | group identifiers, owner and group strings that consist of decimal | |||
numeric values with no leading zeros can be given a special | numeric values with no leading zeros can be given a special | |||
interpretation by clients and servers that choose to provide such | interpretation by clients and servers that choose to provide such | |||
support. The receiver may treat such a user or group string as | support. The receiver may treat such a user or group string as | |||
representing the same user as would be represented by an NFSv3 uid or | representing the same user as would be represented by an NFSv3 uid or | |||
gid having the corresponding numeric value. A server is not | gid having the corresponding numeric value. | |||
obligated to accept such a string, but may return an NFS4ERR_BADOWNER | ||||
instead. To avoid this mechanism being used to subvert user and | A server SHOULD reject such a numeric value if the security mechanism | |||
group translation, so that a client might pass all of the owners and | is kerberized. I.e., in such a scenario, the client will already | |||
groups in numeric form, a server SHOULD return an NFS4ERR_BADOWNER | need to form "user@domain" strings. For any other security | |||
mechanism, the server SHOULD accept such numeric values. As an | ||||
implementation note, the server could make such an acceptance be | ||||
configurable. If the server does not support numeric values or if it | ||||
is configured off, then it MUST return an NFS4ERR_BADOWNER error. If | ||||
the security mechanism is kerberized and the client attempts to use | ||||
the special form, then the server SHOULD return an NFS4ERR_BADOWNER | ||||
error when there is a valid translation for the user or owner | error when there is a valid translation for the user or owner | |||
designated in this way. In that case, the client must use the | designated in this way. In that case, the client must use the | |||
appropriate name@domain string and not the special form for | appropriate user@domain string and not the special form for | |||
compatibility. | compatibility. | |||
The client MUST always accept numeric values if the security | ||||
mechanism is not kerberized. A client can determine if a server | ||||
supports such a mechanism by first attempting to provide a numeric | ||||
value and only if it is rejected with an NFS4ERR_BADOWNER error, then | ||||
providing a name value. After the first detection of such an error, | ||||
the client should only use the special form. | ||||
The owner string "nobody" may be used to designate an anonymous user, | The owner string "nobody" may be used to designate an anonymous user, | |||
which will be associated with a file created by a security principal | which will be associated with a file created by a security principal | |||
that cannot be mapped through normal means to the owner attribute. | that cannot be mapped through normal means to the owner attribute. | |||
5.10. Character Case Attributes | 5.10. Character Case Attributes | |||
With respect to the case_insensitive and case_preserving attributes, | With respect to the case_insensitive and case_preserving attributes, | |||
each UCS-4 character (which UTF-8 encodes) has a "long descriptive | each UCS-4 character (which UTF-8 encodes) has a "long descriptive | |||
name" RFC1345 [30] which may or may not include the word "CAPITAL" or | name" RFC1345 [30] which may or may not include the word "CAPITAL" or | |||
"SMALL". The presence of SMALL or CAPITAL allows an NFS server to | "SMALL". The presence of SMALL or CAPITAL allows an NFS server to | |||
skipping to change at page 107, line 24 | skipping to change at page 108, line 9 | |||
Given the above considerations, an example of a well generated id | Given the above considerations, an example of a well generated id | |||
string is one that includes: | string is one that includes: | |||
o The server's network address. | o The server's network address. | |||
o The client's network address. | o The client's network address. | |||
o For a user level NFS version 4 client, it should contain | o For a user level NFS version 4 client, it should contain | |||
additional information to distinguish the client from other user | additional information to distinguish the client from other user | |||
level clients running on the same host, such as a process id or | level clients running on the same host, such as an universally | |||
other unique sequence. | unique identifier (UUID). | |||
o Additional information that tends to be unique, such as one or | o Additional information that tends to be unique, such as one or | |||
more of: | more of: | |||
* The client machine's serial number (for privacy reasons, it is | * The client machine's serial number (for privacy reasons, it is | |||
best to perform some one way function on the serial number). | best to perform some one way function on the serial number). | |||
* A MAC address. | * A MAC address. | |||
* The timestamp of when the NFS version 4 software was first | * The timestamp of when the NFS version 4 software was first | |||
skipping to change at page 132, line 10 | skipping to change at page 132, line 37 | |||
CLOSE, READ, WRITE, RENEW, LOCK, and others), will return the error | CLOSE, READ, WRITE, RENEW, LOCK, and others), will return the error | |||
NFS4ERR_LEASE_MOVED if responsibility for any of the leases to be | NFS4ERR_LEASE_MOVED if responsibility for any of the leases to be | |||
renewed has been transferred to a new server. This condition will | renewed has been transferred to a new server. This condition will | |||
continue until the client receives an NFS4ERR_MOVED error and the | continue until the client receives an NFS4ERR_MOVED error and the | |||
server receives the subsequent GETATTR(fs_locations) for an access to | server receives the subsequent GETATTR(fs_locations) for an access to | |||
each filesystem for which a lease has been moved to a new server. By | each filesystem for which a lease has been moved to a new server. By | |||
convention, the compound including the GETATTR(fs_locations) SHOULD | convention, the compound including the GETATTR(fs_locations) SHOULD | |||
append a RENEW operation to permit the server to identify the client | append a RENEW operation to permit the server to identify the client | |||
doing the access. | doing the access. | |||
When a client receives an NFS4ERR_LEASE_MOVED error, it should | Upon receiving the NFS4ERR_LEASE_MOVED error, a client that supports | |||
perform an operation on each filesystem associated with the server in | filesystem migration MUST probe all filesystems from that server on | |||
question. When the client receives an NFS4ERR_MOVED error, the | which it holds open state. Once the client has successfully probed | |||
client can follow the normal process to obtain the new server | all those filesystems which are migrated, the server MUST resume | |||
information (through the fs_locations attribute) and perform renewal | normal handling of stateful requests from that client. | |||
of those leases on the new server. If the server has not had state | ||||
In order to support legacy clients that do not handle the | ||||
NFS4ERR_LEASE_MOVED error correctly, the server SHOULD time out after | ||||
a wait of at least two lease periods, at which time it will resume | ||||
normal handling of stateful requests from all clients. If a client | ||||
attempts to access the migrated files, the server MUST reply | ||||
NFS4ERR_MOVED. | ||||
When the client receives an NFS4ERR_MOVED error, the client can | ||||
follow the normal process to obtain the new server information | ||||
(through the fs_locations attribute) and perform renewal of those | ||||
leases on the new server. If the server has not had state | ||||
transferred to it transparently, the client will receive either | transferred to it transparently, the client will receive either | |||
NFS4ERR_STALE_CLIENTID or NFS4ERR_STALE_STATEID from the new server, | NFS4ERR_STALE_CLIENTID or NFS4ERR_STALE_STATEID from the new server, | |||
as described above, and the client can then recover state information | as described above. The client can then recover state information as | |||
as it does in the event of server failure. | it does in the event of server failure. | |||
9.14.4. Migration and the Lease_time Attribute | 9.14.4. Migration and the Lease_time Attribute | |||
In order that the client may appropriately manage its leases in the | In order that the client may appropriately manage its leases in the | |||
case of migration, the destination server must establish proper | case of migration, the destination server must establish proper | |||
values for the lease_time attribute. | values for the lease_time attribute. | |||
When state is transferred transparently, that state should include | When state is transferred transparently, that state should include | |||
the correct value of the lease_time attribute. The lease_time | the correct value of the lease_time attribute. The lease_time | |||
attribute on the destination server must never be less than that on | attribute on the destination server must never be less than that on | |||
skipping to change at page 135, line 46 | skipping to change at page 136, line 37 | |||
not know what opens are in effect on the client. Without this | not know what opens are in effect on the client. Without this | |||
knowledge the server will be unable to determine if the access and | knowledge the server will be unable to determine if the access and | |||
deny state for the file allows any particular open until the | deny state for the file allows any particular open until the | |||
delegation for the file has been returned. | delegation for the file has been returned. | |||
A client failure or a network partition can result in failure to | A client failure or a network partition can result in failure to | |||
respond to a recall callback. In this case, the server will revoke | respond to a recall callback. In this case, the server will revoke | |||
the delegation which in turn will render useless any modified state | the delegation which in turn will render useless any modified state | |||
still on the client. | still on the client. | |||
Clients need to be aware that server implementors may enforce | ||||
practical limitations on the number of delegations issued. Further, | ||||
as there is no way to determine which delegations to revoke, the | ||||
server is allowed to revoke any. If the server is implemented to | ||||
revoke another delegation held by that client, then the client may be | ||||
able to determine that a limit has been reached because each new | ||||
delegation request results in a revoke. The client could then | ||||
determine which delegations it may not need and preemptively release | ||||
them. | ||||
10.2.1. Delegation Recovery | 10.2.1. Delegation Recovery | |||
There are three situations that delegation recovery must deal with: | There are three situations that delegation recovery must deal with: | |||
o Client reboot or restart | o Client reboot or restart | |||
o Server reboot or restart | o Server reboot or restart | |||
o Network partition (full or callback-only) | o Network partition (full or callback-only) | |||
In the event the client reboots or restarts, the failure to renew | In the event the client reboots or restarts, the failure to renew | |||
skipping to change at page 137, line 15 | skipping to change at page 138, line 15 | |||
o Upon reclaim, a client reporting resources assigned to it by an | o Upon reclaim, a client reporting resources assigned to it by an | |||
earlier server instance must be granted those resources. | earlier server instance must be granted those resources. | |||
o The server has unquestionable authority to determine whether | o The server has unquestionable authority to determine whether | |||
delegations are to be granted and, once granted, whether they are | delegations are to be granted and, once granted, whether they are | |||
to be continued. | to be continued. | |||
o The use of callbacks is not to be depended upon until the client | o The use of callbacks is not to be depended upon until the client | |||
has proven its ability to receive them. | has proven its ability to receive them. | |||
When a client has more than a single open associated with a | ||||
delegation, state for those additional opens can be established using | ||||
OPEN operations of type CLAIM_DELEGATE_CUR. When these are used to | ||||
establish opens associated with reclaimed delegations, the server | ||||
MUST allow them when made within the grace period. | ||||
When a network partition occurs, delegations are subject to freeing | When a network partition occurs, delegations are subject to freeing | |||
by the server when the lease renewal period expires. This is similar | by the server when the lease renewal period expires. This is similar | |||
to the behavior for locks and share reservations. For delegations, | to the behavior for locks and share reservations. For delegations, | |||
however, the server may extend the period in which conflicting | however, the server may extend the period in which conflicting | |||
requests are held off. Eventually the occurrence of a conflicting | requests are held off. Eventually the occurrence of a conflicting | |||
request from another client will cause revocation of the delegation. | request from another client will cause revocation of the delegation. | |||
A loss of the callback path (e.g., by later network configuration | A loss of the callback path (e.g., by later network configuration | |||
change) will have the same effect. A recall request will fail and | change) will have the same effect. A recall request will fail and | |||
revocation of the delegation will result. | revocation of the delegation will result. | |||
End of changes. 40 change blocks. | ||||
185 lines changed or deleted | 236 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |