[go: up one dir, main page]

 draft-ietf-nfsv4-rfc8881bis-10.txt   draft-ietf-nfsv4-rfc8881bis-11.txt 
NFSv4 D. Noveck, Ed. NFSv4 D. Noveck, Ed.
Internet-Draft NetApp Internet-Draft NetApp
Obsoletes: 8881, 8434 (if approved) 14 September 2026 Obsoletes: 8881, 8434 (if approved) 23 September 2026
Updates: 5664, 8154 (if approved) Updates: 5664, 8154 (if approved)
Intended status: Standards Track Intended status: Standards Track
Expires: 18 March 2027 Expires: 27 March 2027
Network File System (NFS) Version 4 Minor Version 1 Protocol Network File System (NFS) Version 4 Minor Version 1 Protocol
draft-ietf-nfsv4-rfc8881bis-10 draft-ietf-nfsv4-rfc8881bis-11
Abstract Abstract
This document describes the Network File System (NFS) version 4 minor This document describes the Network File System (NFS) version 4 minor
version 1, including features retained from the base protocol (NFS version 1, including features retained from the base protocol (NFS
version 4 minor version 0, which is specified in RFC 7530) and version 4 minor version 0, which is specified in RFC 7530) and
protocol extensions made and part of Minor Version 1. The later protocol extensions made and part of Minor Version 1. The later
minor version has no dependencies on NFS version 4 minor version 0, minor version has no dependencies on NFS version 4 minor version 0,
and was, until recently, documented as a completely separate and was, until recently, documented as a completely separate
protocol. protocol.
skipping to change at page 1, line 45 skipping to change at page 1, line 45
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on 18 March 2027. This Internet-Draft will expire on 27 March 2027.
Copyright Notice Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the Copyright (c) 2026 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 (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 2, line 36 skipping to change at page 2, line 36
outside the IETF Standards Process, and derivative works of it may outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. Introduction to this Update . . . . . . . . . . . . . . . . . 18 1. Introduction to this Update . . . . . . . . . . . . . . . . . 18
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 19 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 19
1.2. The Changed Role of this Specification . . . . . . . . . 20 1.2. The Changed Role of this Specification . . . . . . . . . 20
1.3. Possibility of Compatibility Issues . . . . . . . . . . . 21 1.3. Addressing Major Mistakes . . . . . . . . . . . . . . . . 21
1.3.1. Compatibility issues for RFCTBD10 . . . . . . . . . . 22 1.4. Possibility of Compatibility Issues . . . . . . . . . . . 23
1.3.2. Compatibility issues for NFSv4-wide Documents . . . . 25 1.4.1. Compatibility issues for RFCTBD10 . . . . . . . . . . 24
1.3.3. Compatibility issues for RFCTBD30 . . . . . . . . . . 26 1.4.2. Compatibility issues for NFSv4-wide Documents . . . . 26
1.4. Addressing Protocol Defects Via XDR Changes . . . . . . . 27 1.4.3. Compatibility issues for RFCTBD30 . . . . . . . . . . 28
1.5. Incorporation of RFC8434 . . . . . . . . . . . . . . . . 33 1.5. Addressing Protocol Defects Via XDR Changes . . . . . . . 28
2. Introduction to this Minor Version Specification . . . . . . 34 1.6. Incorporation of RFC8434 . . . . . . . . . . . . . . . . 34
2.1. The NFS Version 4 Minor Version 1 Protocol . . . . . . . 34 2. Introduction to this Minor Version Specification . . . . . . 35
2.2. Scope of This Document . . . . . . . . . . . . . . . . . 34 2.1. The NFS Version 4 Minor Version 1 Protocol . . . . . . . 35
2.3. NFSv4 Goals . . . . . . . . . . . . . . . . . . . . . . . 34 2.2. Scope of This Document . . . . . . . . . . . . . . . . . 35
2.4. NFSv4.1 Goals . . . . . . . . . . . . . . . . . . . . . . 35 2.3. NFSv4 Goals . . . . . . . . . . . . . . . . . . . . . . . 36
2.5. General Definitions . . . . . . . . . . . . . . . . . . . 36 2.4. NFSv4.1 Goals . . . . . . . . . . . . . . . . . . . . . . 37
2.6. Overview of NFSv4.1 Features . . . . . . . . . . . . . . 39 2.5. General Definitions . . . . . . . . . . . . . . . . . . . 37
2.7. RPC and Security . . . . . . . . . . . . . . . . . . . . 39 2.6. Overview of NFSv4.1 Features . . . . . . . . . . . . . . 40
2.8. Protocol Structure . . . . . . . . . . . . . . . . . . . 39 2.7. RPC and Security . . . . . . . . . . . . . . . . . . . . 41
2.8.1. Core Protocol . . . . . . . . . . . . . . . . . . . . 40 2.8. Protocol Structure . . . . . . . . . . . . . . . . . . . 41
2.8.2. Separate Data Access Paths . . . . . . . . . . . . . 40 2.8.1. Core Protocol . . . . . . . . . . . . . . . . . . . . 41
2.8.2. Separate Data Access Paths . . . . . . . . . . . . . 41
2.9. File System Model . . . . . . . . . . . . . . . . . . . . 40 2.9. File System Model . . . . . . . . . . . . . . . . . . . . 42
2.9.1. Filehandles . . . . . . . . . . . . . . . . . . . . . 41 2.9.1. Filehandles . . . . . . . . . . . . . . . . . . . . . 42
2.9.2. Numbered File Attributes . . . . . . . . . . . . . . 41 2.9.2. Numbered File Attributes . . . . . . . . . . . . . . 42
2.9.3. Named Attributes . . . . . . . . . . . . . . . . . . 44 2.9.3. Named Attributes . . . . . . . . . . . . . . . . . . 45
2.9.4. Multi-Server Namespace . . . . . . . . . . . . . . . 44 2.9.4. Multi-Server Namespace . . . . . . . . . . . . . . . 45
3. Locking Facilities . . . . . . . . . . . . . . . . . . . . . 45 3. Locking Facilities . . . . . . . . . . . . . . . . . . . . . 46
4. Differences from NFSv4.0 . . . . . . . . . . . . . . . . . . 46 4. Differences from NFSv4.0 . . . . . . . . . . . . . . . . . . 47
5. Core Infrastructure . . . . . . . . . . . . . . . . . . . . . 47 5. Core Infrastructure . . . . . . . . . . . . . . . . . . . . . 48
5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 47 5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 48
5.2. RPC and XDR . . . . . . . . . . . . . . . . . . . . . . . 47 5.2. RPC and XDR . . . . . . . . . . . . . . . . . . . . . . . 48
5.3. RPC-Based Security . . . . . . . . . . . . . . . . . . . 47 5.3. RPC-Based Security . . . . . . . . . . . . . . . . . . . 48
5.3.1. RPCSEC_GSS and Security Services . . . . . . . . . . 48 5.3.1. RPCSEC_GSS and Security Services . . . . . . . . . . 49
5.4. COMPOUND and CB_COMPOUND . . . . . . . . . . . . . . . . 48 5.4. COMPOUND and CB_COMPOUND . . . . . . . . . . . . . . . . 49
5.5. Client Identifiers and Client Owners . . . . . . . . . . 49 5.5. Client Identifiers and Client Owners . . . . . . . . . . 50
5.5.1. Upgrade from NFSv4.0 to NFSv4.1 . . . . . . . . . . . 53 5.5.1. Upgrade from NFSv4.0 to NFSv4.1 . . . . . . . . . . . 54
5.5.2. Server Release of Client ID . . . . . . . . . . . . . 53 5.5.2. Server Release of Client ID . . . . . . . . . . . . . 54
5.5.3. Resolving Client Owner Conflicts . . . . . . . . . . 54 5.5.3. Resolving Client Owner Conflicts . . . . . . . . . . 55
5.6. Server Owners . . . . . . . . . . . . . . . . . . . . . . 55 5.6. Server Owners . . . . . . . . . . . . . . . . . . . . . . 56
5.7. Transport Layers . . . . . . . . . . . . . . . . . . . . 56 5.7. Transport Layers . . . . . . . . . . . . . . . . . . . . 57
5.7.1. Desirable and Needed Properties of Transports . . . . 56 5.7.1. Desirable and Needed Properties of Transports . . . . 57
5.7.2. Client and Server Transport Behavior . . . . . . . . 57 5.7.2. Client and Server Transport Behavior . . . . . . . . 58
5.7.3. Ports . . . . . . . . . . . . . . . . . . . . . . . . 59 5.7.3. Ports . . . . . . . . . . . . . . . . . . . . . . . . 60
6. Security-related Infrastructure . . . . . . . . . . . . . . . 59 6. Security-related Infrastructure . . . . . . . . . . . . . . . 60
6.1. NFSv4.1-specific Recommendations and Requirements Regarding 6.1. NFSv4.1-specific Recommendations and Requirements Regarding
Security Services . . . . . . . . . . . . . . . . . . . . 60 Security Services . . . . . . . . . . . . . . . . . . . . 61
6.2. NFSv4.1-specific Details of Security Negotiation . . . . 62 6.2. NFSv4.1-specific Details of Security Negotiation . . . . 63
6.2.1. Put Filehandle Operations . . . . . . . . . . . . . . 62 6.2.1. Put Filehandle Operations . . . . . . . . . . . . . . 63
6.2.2. LINK and RENAME . . . . . . . . . . . . . . . . . . . 65 6.2.2. LINK and RENAME . . . . . . . . . . . . . . . . . . . 66
7. Session . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7. Session . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1. Motivation and Overview . . . . . . . . . . . . . . . . . 66 7.1. Motivation and Overview . . . . . . . . . . . . . . . . . 67
7.2. NFSv4 Integration . . . . . . . . . . . . . . . . . . . . 67 7.2. NFSv4 Integration . . . . . . . . . . . . . . . . . . . . 68
7.2.1. SEQUENCE and CB_SEQUENCE . . . . . . . . . . . . . . 68 7.2.1. SEQUENCE and CB_SEQUENCE . . . . . . . . . . . . . . 69
7.2.2. Client ID and Session Association . . . . . . . . . . 68 7.2.2. Client ID and Session Association . . . . . . . . . . 69
7.3. Channels . . . . . . . . . . . . . . . . . . . . . . . . 69 7.3. Channels . . . . . . . . . . . . . . . . . . . . . . . . 70
7.3.1. Association of Connections, Channels, and Sessions . 69 7.3.1. Association of Connections, Channels, and Sessions . 70
7.4. Server Scope . . . . . . . . . . . . . . . . . . . . . . 70 7.4. Server Scope . . . . . . . . . . . . . . . . . . . . . . 71
7.5. Trunking . . . . . . . . . . . . . . . . . . . . . . . . 72 7.5. Trunking . . . . . . . . . . . . . . . . . . . . . . . . 73
7.5.1. Verifying Claims of Matching Server Identity . . . . 75 7.5.1. Verifying Claims of Matching Server Identity . . . . 76
7.6. Exactly Once Semantics . . . . . . . . . . . . . . . . . 76 7.6. Exactly Once Semantics . . . . . . . . . . . . . . . . . 77
7.6.1. Slot Identifiers and Reply Cache . . . . . . . . . . 78 7.6.1. Slot Identifiers and Reply Cache . . . . . . . . . . 79
7.6.2. Retry and Replay of Reply . . . . . . . . . . . . . . 87 7.6.2. Retry and Replay of Reply . . . . . . . . . . . . . . 88
7.6.3. Resolving Server Callback Races . . . . . . . . . . . 89 7.6.3. Resolving Server Callback Races . . . . . . . . . . . 90
7.6.4. COMPOUND and CB_COMPOUND Construction Issues . . . . 90 7.6.4. COMPOUND and CB_COMPOUND Construction Issues . . . . 91
7.6.5. Setting Size limits for Sessions . . . . . . . . . . 92 7.6.5. Setting Size limits for Sessions . . . . . . . . . . 93
7.7. RDMA Considerations . . . . . . . . . . . . . . . . . . . 93 7.7. RDMA Considerations . . . . . . . . . . . . . . . . . . . 94
7.7.1. RDMA Connection Resources . . . . . . . . . . . . . . 93 7.7.1. RDMA Connection Resources . . . . . . . . . . . . . . 94
7.7.2. Flow Control . . . . . . . . . . . . . . . . . . . . 94 7.7.2. Flow Control . . . . . . . . . . . . . . . . . . . . 95
7.7.3. Padding . . . . . . . . . . . . . . . . . . . . . . . 94 7.7.3. Padding . . . . . . . . . . . . . . . . . . . . . . . 95
7.7.4. Dual RDMA and Non-RDMA Transports . . . . . . . . . . 96 7.7.4. Dual RDMA and Non-RDMA Transports . . . . . . . . . . 97
7.8. Session Security . . . . . . . . . . . . . . . . . . . . 96 7.8. Session Security . . . . . . . . . . . . . . . . . . . . 97
7.8.1. Session Callback Security . . . . . . . . . . . . . . 96 7.8.1. Session Callback Security . . . . . . . . . . . . . . 97
7.8.2. Backchannel RPC Security . . . . . . . . . . . . . . 96 7.8.2. Backchannel RPC Security . . . . . . . . . . . . . . 97
7.8.3. Protection from Unauthorized State Changes . . . . . 97 7.8.3. Protection from Unauthorized State Changes . . . . . 98
7.9. The Secret State Verifier (SSV) GSS Mechanism . . . . . . 101 7.9. The Secret State Verifier (SSV) GSS Mechanism . . . . . . 102
7.10. Security Considerations for RPCSEC_GSS When Using the SSV 7.10. Security Considerations for RPCSEC_GSS When Using the SSV
Mechanism . . . . . . . . . . . . . . . . . . . . . . . 106 Mechanism . . . . . . . . . . . . . . . . . . . . . . . 107
7.11. Session Mechanics - Steady State . . . . . . . . . . . . 107 7.11. Session Mechanics - Steady State . . . . . . . . . . . . 108
7.11.1. Obligations of the Server . . . . . . . . . . . . . 107 7.11.1. Obligations of the Server . . . . . . . . . . . . . 108
7.11.2. Obligations of the Client . . . . . . . . . . . . . 107 7.11.2. Obligations of the Client . . . . . . . . . . . . . 108
7.11.3. Steps the Client Takes to Establish a Session . . . 108 7.11.3. Steps the Client Takes to Establish a Session . . . 109
7.12. Session Inactivity Timer . . . . . . . . . . . . . . . . 109 7.12. Session Inactivity Timer . . . . . . . . . . . . . . . . 110
7.13. Session Mechanics - Recovery . . . . . . . . . . . . . . 109 7.13. Session Mechanics - Recovery . . . . . . . . . . . . . . 110
7.13.1. Events Requiring Client Action . . . . . . . . . . . 109 7.13.1. Events Requiring Client Action . . . . . . . . . . . 110
7.13.2. Events Requiring Server Action . . . . . . . . . . . 114 7.13.2. Events Requiring Server Action . . . . . . . . . . . 115
7.14. Parallel NFS and Sessions . . . . . . . . . . . . . . . . 115 7.14. Parallel NFS and Sessions . . . . . . . . . . . . . . . . 116
8. Persistence . . . . . . . . . . . . . . . . . . . . . . . . . 115 8. Persistence . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.1. Need for Feature Respecification . . . . . . . . . . . . 116 8.1. Need for Feature Respecification . . . . . . . . . . . . 117
8.2. Persistence of Reply Cache . . . . . . . . . . . . . . . 117 8.2. Persistence of Reply Cache . . . . . . . . . . . . . . . 118
8.3. Persistence of Locking State . . . . . . . . . . . . . . 119 8.3. Persistence of Locking State . . . . . . . . . . . . . . 120
8.4. Client Handling of Server Failure When Persistence Can be 8.4. Client Handling of Server Failure When Persistence Can be
Used . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Used . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.5. Client Use of Session-based Persistence . . . . . . . . . 121 8.5. Client Use of Session-based Persistence . . . . . . . . . 122
8.6. Client Use of Clientid-based Persistence . . . . . . . . 123 8.6. Client Use of Clientid-based Persistence . . . . . . . . 124
9. Protocol Constants and Data Types . . . . . . . . . . . . . . 124 9. Protocol Constants and Data Types . . . . . . . . . . . . . . 125
9.1. Basic Constants . . . . . . . . . . . . . . . . . . . . . 124 9.1. Basic Constants . . . . . . . . . . . . . . . . . . . . . 125
9.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 125 9.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 126
9.3. Structured Data Types . . . . . . . . . . . . . . . . . . 128 9.3. Structured Data Types . . . . . . . . . . . . . . . . . . 129
9.3.1. nfstime4 . . . . . . . . . . . . . . . . . . . . . . 128 9.3.1. nfstime4 . . . . . . . . . . . . . . . . . . . . . . 129
9.3.2. time_how4 . . . . . . . . . . . . . . . . . . . . . . 129 9.3.2. time_how4 . . . . . . . . . . . . . . . . . . . . . . 130
9.3.3. settime4 . . . . . . . . . . . . . . . . . . . . . . 129 9.3.3. settime4 . . . . . . . . . . . . . . . . . . . . . . 130
9.3.4. specdata4 . . . . . . . . . . . . . . . . . . . . . . 129 9.3.4. specdata4 . . . . . . . . . . . . . . . . . . . . . . 130
9.3.5. fsid4 . . . . . . . . . . . . . . . . . . . . . . . . 129 9.3.5. fsid4 . . . . . . . . . . . . . . . . . . . . . . . . 130
9.3.6. change_policy4 . . . . . . . . . . . . . . . . . . . 129 9.3.6. change_policy4 . . . . . . . . . . . . . . . . . . . 130
9.3.7. fattr4 . . . . . . . . . . . . . . . . . . . . . . . 130 9.3.7. fattr4 . . . . . . . . . . . . . . . . . . . . . . . 131
9.3.8. change_info4 . . . . . . . . . . . . . . . . . . . . 130 9.3.8. change_info4 . . . . . . . . . . . . . . . . . . . . 131
9.3.9. netaddr4 . . . . . . . . . . . . . . . . . . . . . . 130 9.3.9. netaddr4 . . . . . . . . . . . . . . . . . . . . . . 131
9.3.10. state_owner4 . . . . . . . . . . . . . . . . . . . . 131 9.3.10. state_owner4 . . . . . . . . . . . . . . . . . . . . 132
9.3.11. open_to_lock_owner4 . . . . . . . . . . . . . . . . . 131 9.3.11. open_to_lock_owner4 . . . . . . . . . . . . . . . . . 132
9.3.12. stateid4 . . . . . . . . . . . . . . . . . . . . . . 131 9.3.12. stateid4 . . . . . . . . . . . . . . . . . . . . . . 132
9.3.13. layouttype4 . . . . . . . . . . . . . . . . . . . . . 132 9.3.13. layouttype4 . . . . . . . . . . . . . . . . . . . . . 133
9.3.14. deviceid4 . . . . . . . . . . . . . . . . . . . . . . 132 9.3.14. deviceid4 . . . . . . . . . . . . . . . . . . . . . . 133
9.3.15. device_addr4 . . . . . . . . . . . . . . . . . . . . 133 9.3.15. device_addr4 . . . . . . . . . . . . . . . . . . . . 134
9.3.16. layout_content4 . . . . . . . . . . . . . . . . . . . 133 9.3.16. layout_content4 . . . . . . . . . . . . . . . . . . . 134
9.3.17. layout4 . . . . . . . . . . . . . . . . . . . . . . . 133 9.3.17. layout4 . . . . . . . . . . . . . . . . . . . . . . . 134
9.3.18. layoutupdate4 . . . . . . . . . . . . . . . . . . . . 134 9.3.18. layoutupdate4 . . . . . . . . . . . . . . . . . . . . 135
9.3.19. layouthint4 . . . . . . . . . . . . . . . . . . . . . 134 9.3.19. layouthint4 . . . . . . . . . . . . . . . . . . . . . 135
9.3.20. layoutiomode4 . . . . . . . . . . . . . . . . . . . . 134 9.3.20. layoutiomode4 . . . . . . . . . . . . . . . . . . . . 135
9.3.21. nfs_impl_id4 . . . . . . . . . . . . . . . . . . . . 135 9.3.21. nfs_impl_id4 . . . . . . . . . . . . . . . . . . . . 136
9.3.22. threshold_item4 . . . . . . . . . . . . . . . . . . . 135 9.3.22. threshold_item4 . . . . . . . . . . . . . . . . . . . 136
9.3.23. mdsthreshold4 . . . . . . . . . . . . . . . . . . . . 136 9.3.23. mdsthreshold4 . . . . . . . . . . . . . . . . . . . . 137
10. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 137 10. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.1. Obtaining the First Filehandle . . . . . . . . . . . . . 137 10.1. Obtaining the First Filehandle . . . . . . . . . . . . . 138
10.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . 137 10.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . 138
10.1.2. Public Filehandle . . . . . . . . . . . . . . . . . 138 10.1.2. Public Filehandle . . . . . . . . . . . . . . . . . 139
10.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 138 10.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 139
10.2.1. General Properties of a Filehandle . . . . . . . . . 138 10.2.1. General Properties of a Filehandle . . . . . . . . . 139
10.2.2. Persistent Filehandle . . . . . . . . . . . . . . . 139 10.2.2. Persistent Filehandle . . . . . . . . . . . . . . . 140
10.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . 139 10.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . 140
10.3. One Method of Constructing a Volatile Filehandle . . . . 141 10.3. One Method of Constructing a Volatile Filehandle . . . . 142
10.4. Client Recovery from Filehandle Expiration . . . . . . . 141 10.4. Client Recovery from Filehandle Expiration . . . . . . . 142
11. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 142 11. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 143
11.1. Categorization of File Attributes . . . . . . . . . . . 142 11.1. Categorization of File Attributes . . . . . . . . . . . 143
11.2. Changes in the Categorization of File Attributes . . . . 143 11.2. Changes in the Categorization of File Attributes . . . . 144
11.3. Categorization of Authorization-related Attributes . . . 144 11.3. Categorization of Authorization-related Attributes . . . 145
11.4. REQUIRED Attributes . . . . . . . . . . . . . . . . . . 145 11.4. REQUIRED Attributes . . . . . . . . . . . . . . . . . . 146
11.5. OPTIONAL Attributes . . . . . . . . . . . . . . . . . . 145 11.5. OPTIONAL Attributes . . . . . . . . . . . . . . . . . . 146
11.6. Experimental Attributes . . . . . . . . . . . . . . . . 146 11.6. Experimental Attributes . . . . . . . . . . . . . . . . 147
11.7. Named Attributes . . . . . . . . . . . . . . . . . . . . 146 11.7. Named Attributes . . . . . . . . . . . . . . . . . . . . 147
12. Classification of Attributes . . . . . . . . . . . . . . . . 149 12. Classification of Attributes . . . . . . . . . . . . . . . . 150
13. Set-Only and Get-Only Attributes . . . . . . . . . . . . . . 150 13. Set-Only and Get-Only Attributes . . . . . . . . . . . . . . 151
14. REQUIRED Attributes - List and Definition References . . . . 150 14. REQUIRED Attributes - List and Definition References . . . . 151
15. OPTIONAL Attributes - List and Definition References . . . . 151 15. OPTIONAL Attributes - List and Definition References . . . . 152
16. Attribute Definitions . . . . . . . . . . . . . . . . . . . . 155 16. Attribute Definitions . . . . . . . . . . . . . . . . . . . . 156
16.1. Definitions of REQUIRED Attributes . . . . . . . . . . . 155 16.1. Definitions of REQUIRED Attributes . . . . . . . . . . . 156
16.1.1. Attribute 0: supported_attrs . . . . . . . . . . . . 155 16.1.1. Attribute 0: supported_attrs . . . . . . . . . . . . 156
16.1.2. Attribute 1: type . . . . . . . . . . . . . . . . . 156 16.1.2. Attribute 1: type . . . . . . . . . . . . . . . . . 157
16.1.3. Attribute 2: fh_expire_type . . . . . . . . . . . . 156 16.1.3. Attribute 2: fh_expire_type . . . . . . . . . . . . 157
16.1.4. Attribute 3: change . . . . . . . . . . . . . . . . 156 16.1.4. Attribute 3: change . . . . . . . . . . . . . . . . 157
16.1.5. Attribute 4: size . . . . . . . . . . . . . . . . . 157 16.1.5. Attribute 4: size . . . . . . . . . . . . . . . . . 158
16.1.6. Attribute 5: link_support . . . . . . . . . . . . . 157 16.1.6. Attribute 5: link_support . . . . . . . . . . . . . 158
16.1.7. Attribute 6: symlink_support . . . . . . . . . . . . 157 16.1.7. Attribute 6: symlink_support . . . . . . . . . . . . 158
16.1.8. Attribute 7: named_attr . . . . . . . . . . . . . . 157 16.1.8. Attribute 7: named_attr . . . . . . . . . . . . . . 158
16.1.9. Attribute 8: fsid . . . . . . . . . . . . . . . . . 157 16.1.9. Attribute 8: fsid . . . . . . . . . . . . . . . . . 158
16.1.10. Attribute 9: unique_handles . . . . . . . . . . . . 157 16.1.10. Attribute 9: unique_handles . . . . . . . . . . . . 158
16.1.11. Attribute 10: lease_time . . . . . . . . . . . . . . 157 16.1.11. Attribute 10: lease_time . . . . . . . . . . . . . . 158
16.1.12. Attribute 11: rdattr_error . . . . . . . . . . . . . 157 16.1.12. Attribute 11: rdattr_error . . . . . . . . . . . . . 158
16.1.13. Attribute 19: filehandle . . . . . . . . . . . . . . 157 16.1.13. Attribute 19: filehandle . . . . . . . . . . . . . . 158
16.1.14. Attribute 75: suppattr_exclcreat . . . . . . . . . . 157 16.1.14. Attribute 75: suppattr_exclcreat . . . . . . . . . . 158
16.2. Definitions of Uncategorized OPTIONAL Attributes . . . . 158 16.2. Definitions of Uncategorized OPTIONAL Attributes . . . . 159
16.2.1. Attribute 14: archive . . . . . . . . . . . . . . . 158 16.2.1. Attribute 14: archive . . . . . . . . . . . . . . . 159
16.2.2. Attribute 15: cansettime . . . . . . . . . . . . . . 158 16.2.2. Attribute 15: cansettime . . . . . . . . . . . . . . 159
16.2.3. Attribute 16: case_insensitive . . . . . . . . . . . 158 16.2.3. Attribute 16: case_insensitive . . . . . . . . . . . 159
16.2.4. Attribute 17: case_preserving . . . . . . . . . . . 158 16.2.4. Attribute 17: case_preserving . . . . . . . . . . . 159
16.2.5. Attribute 60: change_policy . . . . . . . . . . . . 158 16.2.5. Attribute 60: change_policy . . . . . . . . . . . . 159
16.2.6. Attribute 18: chown_restricted . . . . . . . . . . . 159 16.2.6. Attribute 18: chown_restricted . . . . . . . . . . . 160
16.2.7. Attribute 20: fileid . . . . . . . . . . . . . . . . 159 16.2.7. Attribute 20: fileid . . . . . . . . . . . . . . . . 160
16.2.8. Attribute 21: files_avail . . . . . . . . . . . . . 159 16.2.8. Attribute 21: files_avail . . . . . . . . . . . . . 160
16.2.9. Attribute 22: files_free . . . . . . . . . . . . . . 159 16.2.9. Attribute 22: files_free . . . . . . . . . . . . . . 160
16.2.10. Attribute 23: files_total . . . . . . . . . . . . . 159 16.2.10. Attribute 23: files_total . . . . . . . . . . . . . 160
16.2.11. Attribute 76: fs_charset_cap . . . . . . . . . . . . 159 16.2.11. Attribute 76: fs_charset_cap . . . . . . . . . . . . 160
16.2.12. Attribute 24: fs_locations . . . . . . . . . . . . . 159 16.2.12. Attribute 24: fs_locations . . . . . . . . . . . . . 160
16.2.13. Attribute 67: fs_locations_info . . . . . . . . . . 159 16.2.13. Attribute 67: fs_locations_info . . . . . . . . . . 160
16.2.14. Attribute 61: fs_status . . . . . . . . . . . . . . 159 16.2.14. Attribute 61: fs_status . . . . . . . . . . . . . . 160
16.2.15. Attribute 25: hidden . . . . . . . . . . . . . . . . 160 16.2.15. Attribute 25: hidden . . . . . . . . . . . . . . . . 161
16.2.16. Attribute 26: homogeneous . . . . . . . . . . . . . 160 16.2.16. Attribute 26: homogeneous . . . . . . . . . . . . . 161
16.2.17. Attribute 27: maxfilesize . . . . . . . . . . . . . 160 16.2.17. Attribute 27: maxfilesize . . . . . . . . . . . . . 161
16.2.18. Attribute 28: maxlink . . . . . . . . . . . . . . . 160 16.2.18. Attribute 28: maxlink . . . . . . . . . . . . . . . 161
16.2.19. Attribute 29: maxname . . . . . . . . . . . . . . . 160 16.2.19. Attribute 29: maxname . . . . . . . . . . . . . . . 161
16.2.20. Attribute 30: maxread . . . . . . . . . . . . . . . 160 16.2.20. Attribute 30: maxread . . . . . . . . . . . . . . . 161
16.2.21. Attribute 31: maxwrite . . . . . . . . . . . . . . . 160 16.2.21. Attribute 31: maxwrite . . . . . . . . . . . . . . . 161
16.2.22. Attribute 32: mimetype . . . . . . . . . . . . . . . 160 16.2.22. Attribute 32: mimetype . . . . . . . . . . . . . . . 161
16.2.23. Attribute 55: mounted_on_fileid . . . . . . . . . . 160 16.2.23. Attribute 55: mounted_on_fileid . . . . . . . . . . 161
16.2.24. Attribute 34: no_trunc . . . . . . . . . . . . . . . 162 16.2.24. Attribute 34: no_trunc . . . . . . . . . . . . . . . 163
16.2.25. Attribute 35: numlinks . . . . . . . . . . . . . . . 162 16.2.25. Attribute 35: numlinks . . . . . . . . . . . . . . . 163
16.2.26. Attribute 38: quota_avail_hard . . . . . . . . . . . 162 16.2.26. Attribute 38: quota_avail_hard . . . . . . . . . . . 163
16.2.27. Attribute 39: quota_avail_soft . . . . . . . . . . . 162 16.2.27. Attribute 39: quota_avail_soft . . . . . . . . . . . 163
16.2.28. Attribute 40: quota_used . . . . . . . . . . . . . . 163 16.2.28. Attribute 40: quota_used . . . . . . . . . . . . . . 164
16.2.29. Attribute 41: rawdev . . . . . . . . . . . . . . . . 163 16.2.29. Attribute 41: rawdev . . . . . . . . . . . . . . . . 164
16.2.30. Attribute 42: space_avail . . . . . . . . . . . . . 163 16.2.30. Attribute 42: space_avail . . . . . . . . . . . . . 164
16.2.31. Attribute 43: space_free . . . . . . . . . . . . . . 163 16.2.31. Attribute 43: space_free . . . . . . . . . . . . . . 164
16.2.32. Attribute 44: space_total . . . . . . . . . . . . . 163 16.2.32. Attribute 44: space_total . . . . . . . . . . . . . 164
16.2.33. Attribute 45: space_used . . . . . . . . . . . . . . 163 16.2.33. Attribute 45: space_used . . . . . . . . . . . . . . 164
16.2.34. Attribute 46: system . . . . . . . . . . . . . . . . 163 16.2.34. Attribute 46: system . . . . . . . . . . . . . . . . 164
16.2.35. Attribute 47: time_access . . . . . . . . . . . . . 164 16.2.35. Attribute 47: time_access . . . . . . . . . . . . . 165
16.2.36. Attribute 48: time_access_set . . . . . . . . . . . 164 16.2.36. Attribute 48: time_access_set . . . . . . . . . . . 165
16.2.37. Attribute 49: time_backup . . . . . . . . . . . . . 164 16.2.37. Attribute 49: time_backup . . . . . . . . . . . . . 165
16.2.38. Attribute 50: time_create . . . . . . . . . . . . . 164 16.2.38. Attribute 50: time_create . . . . . . . . . . . . . 165
16.2.39. Attribute 51: time_delta . . . . . . . . . . . . . . 164 16.2.39. Attribute 51: time_delta . . . . . . . . . . . . . . 165
16.2.40. Attribute 52: time_metadata . . . . . . . . . . . . 164 16.2.40. Attribute 52: time_metadata . . . . . . . . . . . . 165
16.2.41. Attribute 53: time_modify . . . . . . . . . . . . . 164 16.2.41. Attribute 53: time_modify . . . . . . . . . . . . . 165
16.2.42. Attribute 54: time_modify_set . . . . . . . . . . . 165 16.2.42. Attribute 54: time_modify_set . . . . . . . . . . . 166
17. Interpreting User and Group Designations . . . . . . . . . . 165 17. Interpreting User and Group Designations . . . . . . . . . . 166
17.1. Translation Framework . . . . . . . . . . . . . . . . . 167 17.1. Translation Framework . . . . . . . . . . . . . . . . . 168
17.2. Issue to be Addressed Regarding Translation . . . . . . 167 17.2. Issue to be Addressed Regarding Translation . . . . . . 168
17.3. User and Group Designations of the Form Name@Domain . . 168 17.3. User and Group Designations of the Form Name@Domain . . 169
17.4. User and Group Designations of the Form of Stringized 17.4. User and Group Designations of the Form of Stringized
Numerics . . . . . . . . . . . . . . . . . . . . . . . . 170 Numerics . . . . . . . . . . . . . . . . . . . . . . . . 171
17.5. User and Group Designations of the Form 17.5. User and Group Designations of the Form
Integer@Domain . . . . . . . . . . . . . . . . . . . . . 170 Integer@Domain . . . . . . . . . . . . . . . . . . . . . 171
18. Character Case Attributes . . . . . . . . . . . . . . . . . . 171 18. Character Case Attributes . . . . . . . . . . . . . . . . . . 172
19. Directory Notification Attributes . . . . . . . . . . . . . . 171 19. Directory Notification Attributes . . . . . . . . . . . . . . 172
19.1. Attribute 56: dir_notif_delay . . . . . . . . . . . . . 171 19.1. Attribute 56: dir_notif_delay . . . . . . . . . . . . . 172
19.2. Attribute 57: dirent_notif_delay . . . . . . . . . . . . 171 19.2. Attribute 57: dirent_notif_delay . . . . . . . . . . . . 172
20. pNFS Attribute Definitions . . . . . . . . . . . . . . . . . 171 20. pNFS Attribute Definitions . . . . . . . . . . . . . . . . . 172
20.1. Attribute 62: fs_layout_type . . . . . . . . . . . . . . 171 20.1. Attribute 62: fs_layout_type . . . . . . . . . . . . . . 172
20.2. Attribute 66: layout_alignment . . . . . . . . . . . . . 172 20.2. Attribute 66: layout_alignment . . . . . . . . . . . . . 173
20.3. Attribute 65: layout_blksize . . . . . . . . . . . . . . 172 20.3. Attribute 65: layout_blksize . . . . . . . . . . . . . . 173
20.4. Attribute 63: layout_hint . . . . . . . . . . . . . . . 172 20.4. Attribute 63: layout_hint . . . . . . . . . . . . . . . 173
20.5. Attribute 64: layout_type . . . . . . . . . . . . . . . 172 20.5. Attribute 64: layout_type . . . . . . . . . . . . . . . 173
20.6. Attribute 68: mdsthreshold . . . . . . . . . . . . . . . 173 20.6. Attribute 68: mdsthreshold . . . . . . . . . . . . . . . 174
21. Retention Attributes . . . . . . . . . . . . . . . . . . . . 173 21. Retention Attributes . . . . . . . . . . . . . . . . . . . . 174
21.1. Attribute 69: retention_get . . . . . . . . . . . . . . 174 21.1. Attribute 69: retention_get . . . . . . . . . . . . . . 175
21.2. Attribute 70: retention_set . . . . . . . . . . . . . . 174 21.2. Attribute 70: retention_set . . . . . . . . . . . . . . 175
21.3. Attribute 71: retentevt_get . . . . . . . . . . . . . . 175 21.3. Attribute 71: retentevt_get . . . . . . . . . . . . . . 176
21.4. Attribute 72: retentevt_set . . . . . . . . . . . . . . 175 21.4. Attribute 72: retentevt_set . . . . . . . . . . . . . . 176
21.5. Attribute 73: retention_hold . . . . . . . . . . . . . . 176 21.5. Attribute 73: retention_hold . . . . . . . . . . . . . . 177
22. Access Control Attributes . . . . . . . . . . . . . . . . . . 176 22. Access Control Attributes . . . . . . . . . . . . . . . . . . 177
23. Single-Server Namespace . . . . . . . . . . . . . . . . . . . 176 23. Single-Server Namespace . . . . . . . . . . . . . . . . . . . 177
23.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 177 23.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 178
23.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 177 23.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 178
23.3. Server Pseudo File System . . . . . . . . . . . . . . . 178 23.3. Server Pseudo File System . . . . . . . . . . . . . . . 179
23.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 178 23.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 179
23.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 178 23.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 179
23.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 179 23.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 180
23.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 179 23.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 180
23.8. Security Policy and Namespace Presentation . . . . . . . 180 23.8. Security Policy and Namespace Presentation . . . . . . . 181
24. State Management . . . . . . . . . . . . . . . . . . . . . . 181 24. State Management . . . . . . . . . . . . . . . . . . . . . . 182
24.1. Client and Session ID . . . . . . . . . . . . . . . . . 181 24.1. Client and Session ID . . . . . . . . . . . . . . . . . 182
24.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 182 24.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 183
24.2.1. Stateid Types . . . . . . . . . . . . . . . . . . . 182 24.2.1. Stateid Types . . . . . . . . . . . . . . . . . . . 183
24.2.2. Stateid Structure . . . . . . . . . . . . . . . . . 184 24.2.2. Stateid Structure . . . . . . . . . . . . . . . . . 185
24.2.3. Special Stateids . . . . . . . . . . . . . . . . . . 185 24.2.3. Special Stateids . . . . . . . . . . . . . . . . . . 186
24.2.4. Stateid Lifetime and Validation . . . . . . . . . . 187 24.2.4. Stateid Lifetime and Validation . . . . . . . . . . 188
24.2.5. Stateid Use for I/O Operations . . . . . . . . . . . 190 24.2.5. Stateid Use for I/O Operations . . . . . . . . . . . 191
24.2.6. Stateid Use for SETATTR Operations . . . . . . . . . 191 24.2.6. Stateid Use for SETATTR Operations . . . . . . . . . 192
24.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 191 24.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 192
24.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 193 24.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 194
24.4.1. Client Failure and Recovery . . . . . . . . . . . . 194 24.4.1. Client Failure and Recovery . . . . . . . . . . . . 195
24.4.2. Server Failure and Recovery . . . . . . . . . . . . 195 24.4.2. Server Failure and Recovery . . . . . . . . . . . . 196
24.4.3. Network Partitions and Recovery . . . . . . . . . . 200 24.4.3. Network Partitions and Recovery . . . . . . . . . . 201
24.5. Server Revocation of Locks . . . . . . . . . . . . . . . 205 24.5. Server Revocation of Locks . . . . . . . . . . . . . . . 206
24.6. Short and Long Leases . . . . . . . . . . . . . . . . . 206 24.6. Short and Long Leases . . . . . . . . . . . . . . . . . 207
24.7. Clocks, Propagation Delay, and Calculating Lease 24.7. Clocks, Propagation Delay, and Calculating Lease
Expiration . . . . . . . . . . . . . . . . . . . . . . . 206 Expiration . . . . . . . . . . . . . . . . . . . . . . . 207
24.8. Obsolete Locking Infrastructure from NFSv4.0 . . . . . . 207 24.8. Obsolete Locking Infrastructure from NFSv4.0 . . . . . . 208
25. File Locking and Share Reservations . . . . . . . . . . . . . 208 25. File Locking and Share Reservations . . . . . . . . . . . . . 209
25.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 208 25.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 209
25.1.1. State-Owner Definition . . . . . . . . . . . . . . . 208 25.1.1. State-Owner Definition . . . . . . . . . . . . . . . 209
25.1.2. Use of the Stateid and Locking . . . . . . . . . . . 209 25.1.2. Use of the Stateid and Locking . . . . . . . . . . . 210
25.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 212
25.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 212 25.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 213
25.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . 213 25.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 213
25.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 213 25.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . 214
25.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 214 25.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 214
25.7. Share Reservations . . . . . . . . . . . . . . . . . . . 215 25.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 215
25.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 216 25.7. Share Reservations . . . . . . . . . . . . . . . . . . . 216
25.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 217 25.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 217
25.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 218 25.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 218
25.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 218 25.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 219
26. Client-Side Caching for Files . . . . . . . . . . . . . . . . 219 25.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 219
26.1. Performance Challenges for Client-Side Caching . . . . . 221 26. Client-Side Caching for Files . . . . . . . . . . . . . . . . 220
26.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 222 26.1. Performance Challenges for Client-Side Caching . . . . . 222
26.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 224 26.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 223
26.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 227 26.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 225
26.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 227 26.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 228
26.3.2. Data Caching and Close-to-open Consistency . . . . . 228 26.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 228
26.3.3. Data Caching and Files Open for Write . . . . . . . 229 26.3.2. Data Caching and Close-to-open Consistency . . . . . 229
26.3.4. Data Caching and File Locking . . . . . . . . . . . 230 26.3.3. Data Caching and Files Open for Write . . . . . . . 230
26.3.5. Data Caching and Mandatory File Locking . . . . . . 232 26.3.4. Data Caching and File Locking . . . . . . . . . . . 231
26.3.6. Data Caching and File Identity . . . . . . . . . . . 232 26.3.5. Data Caching and Mandatory File Locking . . . . . . 233
26.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 233 26.3.6. Data Caching and File Identity . . . . . . . . . . . 233
26.4.1. Open Delegation and Data Caching . . . . . . . . . . 236 26.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 234
26.4.2. Open Delegation and File Locks . . . . . . . . . . . 237 26.4.1. Open Delegation and Data Caching . . . . . . . . . . 237
26.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 238 26.4.2. Open Delegation and File Locks . . . . . . . . . . . 238
26.4.4. Recall of Open Delegation . . . . . . . . . . . . . 241 26.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 239
26.4.5. Clients That Fail to Honor Delegation Recalls . . . 243 26.4.4. Recall of Open Delegation . . . . . . . . . . . . . 242
26.4.6. Delegation Revocation . . . . . . . . . . . . . . . 243 26.4.5. Clients That Fail to Honor Delegation Recalls . . . 244
26.4.7. Delegations via WANT_DELEGATION . . . . . . . . . . 244 26.4.6. Delegation Revocation . . . . . . . . . . . . . . . 244
26.5. Data Caching and Revocation . . . . . . . . . . . . . . 245 26.4.7. Delegations via WANT_DELEGATION . . . . . . . . . . 245
26.5.1. Revocation Recovery for Write Open Delegation . . . 245 26.5. Data Caching and Revocation . . . . . . . . . . . . . . 246
26.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 246 26.5.1. Revocation Recovery for Write Open Delegation . . . 246
26.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 247
26.6.1. Attribute Caching Coherence Between Requesting Client 26.6.1. Attribute Caching Coherence Between Requesting Client
and Server . . . . . . . . . . . . . . . . . . . . . 247 and Server . . . . . . . . . . . . . . . . . . . . . 248
26.6.2. Attribute Caching Coherence Between Requesting Client 26.6.2. Attribute Caching Coherence Between Requesting Client
and Other Clients . . . . . . . . . . . . . . . . . . 248 and Other Clients . . . . . . . . . . . . . . . . . . 249
26.6.3. Attribute Caching Coherence Between Requesting Client 26.6.3. Attribute Caching Coherence Between Requesting Client
and Remote Applications . . . . . . . . . . . . . . . 249 and Remote Applications . . . . . . . . . . . . . . . 250
26.7. Data and Metadata Caching and Memory Mapped Files . . . 250 26.7. Data and Metadata Caching and Memory Mapped Files . . . 251
27. Client-side Name and Directory Caching . . . . . . . . . . . 251 27. Client-side Name and Directory Caching . . . . . . . . . . . 252
27.1. Name and Directory Caching without Directory 27.1. Name and Directory Caching without Directory
Delegations . . . . . . . . . . . . . . . . . . . . . . 252 Delegations . . . . . . . . . . . . . . . . . . . . . . 253
27.1.1. Name Caching . . . . . . . . . . . . . . . . . . . . 252 27.1.1. Name Caching . . . . . . . . . . . . . . . . . . . . 253
27.1.2. Directory Caching . . . . . . . . . . . . . . . . . 253 27.1.2. Directory Caching . . . . . . . . . . . . . . . . . 254
27.2. Directory Delegations and Notifications . . . . . . . . 254 27.2. Directory Delegations and Notifications . . . . . . . . 255
27.2.1. Motivation for Directory Delegations . . . . . . . . 255 27.2.1. Motivation for Directory Delegations . . . . . . . . 256
27.2.2. Directory Caching Features . . . . . . . . . . . . . 255 27.2.2. Directory Caching Features . . . . . . . . . . . . . 256
27.2.3. Directory Delegation Notifications . . . . . . . . . 256 27.2.3. Directory Delegation Notifications . . . . . . . . . 257
27.2.4. Directory Delegation Choices . . . . . . . . . . . . 257 27.2.4. Directory Delegation Choices . . . . . . . . . . . . 258
27.2.5. Directory Delegation Mechanics . . . . . . . . . . . 259 27.2.5. Directory Delegation Mechanics . . . . . . . . . . . 260
27.2.6. Directory Delegation Authorization Extensions . . . 264 27.2.6. Directory Delegation Authorization Extensions . . . 265
27.2.7. Former Authorization Practices and Their Current 27.2.7. Former Authorization Practices and Their Current
Validity . . . . . . . . . . . . . . . . . . . . . . 266 Validity . . . . . . . . . . . . . . . . . . . . . . 267
27.2.8. Alternatives to Use of Directory Delegation 27.2.8. Alternatives to Use of Directory Delegation
Authorization Support . . . . . . . . . . . . . . . . 268 Authorization Support . . . . . . . . . . . . . . . . 269
27.2.9. Directory Delegation Authorization Support . . . . . 270 27.2.9. Directory Delegation Authorization Support . . . . . 271
27.2.10. Directory Delegation Feature Version Management . . 272 27.2.10. Directory Delegation Feature Version Management . . 273
27.2.11. Directory Content Notifications . . . . . . . . . . 273 27.2.11. Directory Content Notifications . . . . . . . . . . 274
27.2.12. Directory Attribute Notifications . . . . . . . . . 277 27.2.12. Directory Attribute Notifications . . . . . . . . . 278
27.2.13. Directory Delegation Authorization-related 27.2.13. Directory Delegation Authorization-related
Information . . . . . . . . . . . . . . . . . . . . . 279 Information . . . . . . . . . . . . . . . . . . . . . 280
27.2.14. Directory Delegation Recall . . . . . . . . . . . . 282 27.2.14. Directory Delegation Recall . . . . . . . . . . . . 283
27.2.15. Directory Delegation Recovery . . . . . . . . . . . 283 27.2.15. Directory Delegation Recovery . . . . . . . . . . . 284
28. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 283 28. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 284
28.1. Terminology . . . . . . . . . . . . . . . . . . . . . . 283 28.1. Terminology . . . . . . . . . . . . . . . . . . . . . . 284
28.1.1. Terminology Related to Trunking . . . . . . . . . . 283 28.1.1. Terminology Related to Trunking . . . . . . . . . . 284
28.1.2. Terminology Related to File System Location . . . . 285 28.1.2. Terminology Related to File System Location . . . . 286
28.2. File System Location Attributes . . . . . . . . . . . . 287 28.2. File System Location Attributes . . . . . . . . . . . . 288
28.3. File System Presence or Absence . . . . . . . . . . . . 288 28.3. File System Presence or Absence . . . . . . . . . . . . 289
28.4. Getting Attributes for an Absent File System . . . . . . 289 28.4. Getting Attributes for an Absent File System . . . . . . 290
28.4.1. GETATTR within an Absent File System . . . . . . . . 289 28.4.1. GETATTR within an Absent File System . . . . . . . . 290
28.4.2. READDIR and Absent File Systems . . . . . . . . . . 291 28.4.2. READDIR and Absent File Systems . . . . . . . . . . 292
28.5. Uses of File System Location Information . . . . . . . . 291 28.5. Uses of File System Location Information . . . . . . . . 292
28.5.1. Combining Multiple Uses in a Single Attribute . . . 292 28.5.1. Combining Multiple Uses in a Single Attribute . . . 293
28.5.2. File System Location Attributes and Trunking . . . . 293 28.5.2. File System Location Attributes and Trunking . . . . 294
28.5.3. File System Location Attributes and Connection Type 28.5.3. File System Location Attributes and Connection Type
Selection . . . . . . . . . . . . . . . . . . . . . . 294 Selection . . . . . . . . . . . . . . . . . . . . . . 295
28.5.4. File System Replication . . . . . . . . . . . . . . 295 28.5.4. File System Replication . . . . . . . . . . . . . . 296
28.5.5. File System Migration . . . . . . . . . . . . . . . 297 28.5.5. File System Migration . . . . . . . . . . . . . . . 298
28.5.6. Referrals . . . . . . . . . . . . . . . . . . . . . 299 28.5.6. Referrals . . . . . . . . . . . . . . . . . . . . . 300
28.5.7. Changes in File System Location Attributes . . . . . 301 28.5.7. Changes in File System Location Attributes . . . . . 302
28.6. Trunking without File System Location Information . . . 302 28.6. Trunking without File System Location Information . . . 303
28.7. Users and Groups in a Multi-Server Namespace . . . . . . 302 28.7. Users and Groups in a Multi-Server Namespace . . . . . . 303
28.8. Additional Client-Side Considerations . . . . . . . . . 303 28.8. Additional Client-Side Considerations . . . . . . . . . 304
28.9. Overview of File Access Transitions . . . . . . . . . . 304 28.9. Overview of File Access Transitions . . . . . . . . . . 305
28.10. Effecting Network Endpoint Transitions . . . . . . . . . 304 28.10. Effecting Network Endpoint Transitions . . . . . . . . . 305
28.11. Effecting File System Transitions . . . . . . . . . . . 305 28.11. Effecting File System Transitions . . . . . . . . . . . 306
28.11.1. File System Transitions and Simultaneous Access . . 306 28.11.1. File System Transitions and Simultaneous Access . . 307
28.11.2. Filehandles and File System Transitions . . . . . . 307 28.11.2. Filehandles and File System Transitions . . . . . . 308
28.11.3. Fileids and File System Transitions . . . . . . . . 308 28.11.3. Fileids and File System Transitions . . . . . . . . 309
28.11.4. Fsids and File System Transitions . . . . . . . . . 309 28.11.4. Fsids and File System Transitions . . . . . . . . . 310
28.11.5. The Change Attribute and File System Transitions . 310 28.11.5. The Change Attribute and File System Transitions . 311
28.11.6. Write Verifiers and File System Transitions . . . . 310 28.11.6. Write Verifiers and File System Transitions . . . . 311
28.11.7. READDIR Cookies and Verifiers and File System 28.11.7. READDIR Cookies and Verifiers and File System
Transitions . . . . . . . . . . . . . . . . . . . . . 310 Transitions . . . . . . . . . . . . . . . . . . . . . 311
28.11.8. File System Data and File System Transitions . . . 311 28.11.8. File System Data and File System Transitions . . . 312
28.11.9. Lock State and File System Transitions . . . . . . 312 28.11.9. Lock State and File System Transitions . . . . . . 313
28.12. Transferring State upon Migration . . . . . . . . . . . 317
28.12. Transferring State upon Migration . . . . . . . . . . . 316 28.12.1. Transparent State Migration and pNFS . . . . . . . 317
28.12.1. Transparent State Migration and pNFS . . . . . . . 316 28.13. Client Responsibilities When Access Is Transitioned . . 319
28.13. Client Responsibilities When Access Is Transitioned . . 318 28.13.1. Client Transition Notifications . . . . . . . . . . 319
28.13.1. Client Transition Notifications . . . . . . . . . . 318 28.13.2. Performing Migration Discovery . . . . . . . . . . 322
28.13.2. Performing Migration Discovery . . . . . . . . . . 321 28.13.3. Overview of Client Response to NFS4ERR_MOVED . . . 325
28.13.3. Overview of Client Response to NFS4ERR_MOVED . . . 324
28.13.4. Obtaining Access to Sessions and State after 28.13.4. Obtaining Access to Sessions and State after
Migration . . . . . . . . . . . . . . . . . . . . . . 326 Migration . . . . . . . . . . . . . . . . . . . . . . 327
28.13.5. Obtaining Access to Sessions and State after Network 28.13.5. Obtaining Access to Sessions and State after Network
Address Transfer . . . . . . . . . . . . . . . . . . 328 Address Transfer . . . . . . . . . . . . . . . . . . 329
28.14. Server Responsibilities Upon Migration . . . . . . . . . 328 28.14. Server Responsibilities Upon Migration . . . . . . . . . 329
28.14.1. Server Responsibilities in Effecting State Reclaim 28.14.1. Server Responsibilities in Effecting State Reclaim
after Migration . . . . . . . . . . . . . . . . . . . 329 after Migration . . . . . . . . . . . . . . . . . . . 330
28.14.2. Server Responsibilities in Effecting Transparent 28.14.2. Server Responsibilities in Effecting Transparent
State Migration . . . . . . . . . . . . . . . . . . . 330 State Migration . . . . . . . . . . . . . . . . . . . 331
28.14.3. Server Responsibilities in Effecting Session 28.14.3. Server Responsibilities in Effecting Session
Transfer . . . . . . . . . . . . . . . . . . . . . . 332 Transfer . . . . . . . . . . . . . . . . . . . . . . 333
28.15. Effecting File System Referrals . . . . . . . . . . . . 334 28.15. Effecting File System Referrals . . . . . . . . . . . . 335
28.15.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 335 28.15.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 336
28.15.2. Referral Example (READDIR) . . . . . . . . . . . . 339 28.15.2. Referral Example (READDIR) . . . . . . . . . . . . 340
28.16. The Attribute fs_locations . . . . . . . . . . . . . . . 341 28.16. The Attribute fs_locations . . . . . . . . . . . . . . . 342
28.17. The Attribute fs_locations_info . . . . . . . . . . . . 344 28.17. The Attribute fs_locations_info . . . . . . . . . . . . 345
28.17.1. The fs_locations_server4 Structure . . . . . . . . 348 28.17.1. The fs_locations_server4 Structure . . . . . . . . 349
28.17.2. The fs_locations_info4 Structure . . . . . . . . . 355 28.17.2. The fs_locations_info4 Structure . . . . . . . . . 356
28.17.3. The fs_locations_item4 Structure . . . . . . . . . 356 28.17.3. The fs_locations_item4 Structure . . . . . . . . . 357
28.18. The Attribute fs_status . . . . . . . . . . . . . . . . 358 28.18. The Attribute fs_status . . . . . . . . . . . . . . . . 359
29. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 362 29. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 363
29.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 362 29.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 363
29.2. Layout Types . . . . . . . . . . . . . . . . . . . . . . 365 29.2. Layout Types . . . . . . . . . . . . . . . . . . . . . . 366
29.3. Normative Layout Specification Terminology . . . . . . . 365 29.3. Normative Layout Specification Terminology . . . . . . . 366
29.4. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 366 29.4. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 367
29.4.1. Metadata . . . . . . . . . . . . . . . . . . . . . . 367 29.4.1. Metadata . . . . . . . . . . . . . . . . . . . . . . 368
29.4.2. Metadata Server . . . . . . . . . . . . . . . . . . 367 29.4.2. Metadata Server . . . . . . . . . . . . . . . . . . 368
29.4.3. pNFS Client . . . . . . . . . . . . . . . . . . . . 367 29.4.3. pNFS Client . . . . . . . . . . . . . . . . . . . . 368
29.4.4. Data Storage Devices . . . . . . . . . . . . . . . . 368 29.4.4. Data Storage Devices . . . . . . . . . . . . . . . . 369
29.4.5. Data Access Protocol . . . . . . . . . . . . . . . . 368 29.4.5. Data Access Protocol . . . . . . . . . . . . . . . . 369
29.4.6. Control Protocol . . . . . . . . . . . . . . . . . . 368 29.4.6. Control Protocol . . . . . . . . . . . . . . . . . . 369
29.4.7. Layout . . . . . . . . . . . . . . . . . . . . . . . 369 29.4.7. Layout . . . . . . . . . . . . . . . . . . . . . . . 370
29.4.8. Layout Iomode . . . . . . . . . . . . . . . . . . . 369 29.4.8. Layout Iomode . . . . . . . . . . . . . . . . . . . 370
29.4.9. Device IDs . . . . . . . . . . . . . . . . . . . . . 370 29.4.9. Device IDs . . . . . . . . . . . . . . . . . . . . . 371
29.5. pNFS Operations . . . . . . . . . . . . . . . . . . . . 372 29.5. pNFS Operations . . . . . . . . . . . . . . . . . . . . 373
29.6. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 373 29.6. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 374
29.7. Layout Semantics . . . . . . . . . . . . . . . . . . . . 373 29.7. Layout Semantics . . . . . . . . . . . . . . . . . . . . 374
29.7.1. Guarantees Provided by Layouts . . . . . . . . . . . 373 29.7.1. Guarantees Provided by Layouts . . . . . . . . . . . 374
29.7.2. Getting a Layout . . . . . . . . . . . . . . . . . . 374 29.7.2. Getting a Layout . . . . . . . . . . . . . . . . . . 375
29.7.3. Layout Stateid . . . . . . . . . . . . . . . . . . . 376 29.7.3. Layout Stateid . . . . . . . . . . . . . . . . . . . 377
29.7.4. Committing a Layout . . . . . . . . . . . . . . . . 379 29.7.4. Committing a Layout . . . . . . . . . . . . . . . . 380
29.7.5. Recalling a Layout . . . . . . . . . . . . . . . . . 380 29.7.5. Recalling a Layout . . . . . . . . . . . . . . . . . 381
29.7.6. Revoking Layouts . . . . . . . . . . . . . . . . . . 388 29.7.6. Revoking Layouts . . . . . . . . . . . . . . . . . . 389
29.7.7. Metadata Server Write Propagation . . . . . . . . . 388 29.7.7. Metadata Server Write Propagation . . . . . . . . . 389
29.8. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 388 29.8. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 389
29.9. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 390 29.9. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 391
29.9.1. Recovery from Client Restart . . . . . . . . . . . . 390 29.9.1. Recovery from Client Restart . . . . . . . . . . . . 391
29.9.2. Dealing with Lease Expiration on the Client . . . . 391 29.9.2. Dealing with Lease Expiration on the Client . . . . 392
29.9.3. Dealing with Loss of Layout State on the Metadata 29.9.3. Dealing with Loss of Layout State on the Metadata
Server . . . . . . . . . . . . . . . . . . . . . . . 392 Server . . . . . . . . . . . . . . . . . . . . . . . 393
29.9.4. Recovery from Metadata Server Restart . . . . . . . 392 29.9.4. Recovery from Metadata Server Restart . . . . . . . 393
29.9.5. Operations during Metadata Server Grace Period . . . 394 29.9.5. Operations during Metadata Server Grace Period . . . 395
29.9.6. Storage Device Recovery . . . . . . . . . . . . . . 395 29.9.6. Storage Device Recovery . . . . . . . . . . . . . . 396
29.10. Metadata and Storage Device Roles . . . . . . . . . . . 395 29.10. Metadata and Storage Device Roles . . . . . . . . . . . 396
29.11. Security Issues for pNFS . . . . . . . . . . . . . . . . 396 29.11. Security Issues for pNFS . . . . . . . . . . . . . . . . 397
29.11.1. Security-related Handling for non-RPC Storage 29.11.1. Security-related Handling for non-RPC Storage
Protocols . . . . . . . . . . . . . . . . . . . . . . 398 Protocols . . . . . . . . . . . . . . . . . . . . . . 399
29.11.2. Security-related Handling for RPC Storage Protocols 29.11.2. Security-related Handling for RPC Storage Protocols
that are NFSv4 Minor Versions Assisted by Control that are NFSv4 Minor Versions Assisted by Control
Protocols . . . . . . . . . . . . . . . . . . . . . . 399 Protocols . . . . . . . . . . . . . . . . . . . . . . 400
29.11.3. Security-related Handling for RPC Storage Protocols 29.11.3. Security-related Handling for RPC Storage Protocols
using NFS Versions together with Control Protocol using NFS Versions together with Control Protocol
Assistance . . . . . . . . . . . . . . . . . . . . . 400 Assistance . . . . . . . . . . . . . . . . . . . . . 401
30. Specification of Layout Types . . . . . . . . . . . . . . . . 401 30. Specification of Layout Types . . . . . . . . . . . . . . . . 402
30.1. Layout Specification Needs . . . . . . . . . . . . . . . 401 30.1. Layout Specification Needs . . . . . . . . . . . . . . . 402
30.1.1. Layout Type Interoperability Models . . . . . . . . 402 30.1.1. Layout Type Interoperability Models . . . . . . . . 403
30.1.2. Layout-Type-Specific Data Types . . . . . . . . . . 403 30.1.2. Layout-Type-Specific Data Types . . . . . . . . . . 404
30.1.3. Control Protocol Layout Management Functions" . . . 403 30.1.3. Control Protocol Layout Management Functions" . . . 404
30.1.4. Other Control Protocol Functions" . . . . . . . . . 404 30.1.4. Other Control Protocol Functions" . . . . . . . . . 405
30.1.5. IO Checking Requirements . . . . . . . . . . . . . . 407 30.1.5. IO Checking Requirements . . . . . . . . . . . . . . 408
30.1.6. Security-related Requirements" . . . . . . . . . . . 408 30.1.6. Security-related Requirements" . . . . . . . . . . . 409
30.1.7. Recovery Requirements" . . . . . . . . . . . . . . . 408 30.1.7. Recovery Requirements" . . . . . . . . . . . . . . . 409
30.1.8. Requirements Regarding Committing Layouts . . . . . 408 30.1.8. Requirements Regarding Committing Layouts . . . . . 409
30.1.9. Requirements Regarding Layout Termination . . . . . 409 30.1.9. Requirements Regarding Layout Termination . . . . . 410
30.1.10. Requirements Regarding Feature Interactions" . . . . 410 30.1.10. Requirements Regarding Feature Interactions" . . . . 411
30.2. Addressing Extensibility Issues Related to Layout 30.2. Addressing Extensibility Issues Related to Layout
Types . . . . . . . . . . . . . . . . . . . . . . . . . 410 Types . . . . . . . . . . . . . . . . . . . . . . . . . 411
30.2.1. Extensibility of Existing Layout-Type-Specific Data 30.2.1. Extensibility of Existing Layout-Type-Specific Data
Types . . . . . . . . . . . . . . . . . . . . . . . . 411 Types . . . . . . . . . . . . . . . . . . . . . . . . 412
30.2.2. Additional Extensibility for Existing 30.2.2. Additional Extensibility for Existing
Layout-Type-Specific Data Types . . . . . . . . . . . 412 Layout-Type-Specific Data Types . . . . . . . . . . . 413
30.2.3. Creation of Additional Layout-Type-Specific Data 30.2.3. Creation of Additional Layout-Type-Specific Data
Types . . . . . . . . . . . . . . . . . . . . . . . . 413 Types . . . . . . . . . . . . . . . . . . . . . . . . 414
30.2.4. Interactions Between Layout Types and Protocol 30.2.4. Interactions Between Layout Types and Protocol
Extension and Versioning . . . . . . . . . . . . . . 414 Extension and Versioning . . . . . . . . . . . . . . 415
30.2.5. Effect of Extensions to the client-MDS Protocol on 30.2.5. Effect of Extensions to the client-MDS Protocol on
Existing Layout Types . . . . . . . . . . . . . . . . 416
30.2.6. Effect of Extensions to the Data Access Protocol on
Existing Layout Types . . . . . . . . . . . . . . . . 417 Existing Layout Types . . . . . . . . . . . . . . . . 417
30.3. Addressing Requirements for Existing Layout Types . . . 418 30.2.6. Effect of Extensions to the Data Access Protocol on
30.3.1. Blocks Layout Type and Layout Type Requirements . . 419 Existing Layout Types . . . . . . . . . . . . . . . . 418
30.3.2. Scsi Layout Type and Layout Type Requirements . . . 420
30.3.3. Object Layout Type and Layout Type Requirements . . 421 30.3. Addressing Requirements for Existing Layout Types . . . 419
30.3.1. Blocks Layout Type and Layout Type Requirements . . 420
30.3.2. Scsi Layout Type and Layout Type Requirements . . . 421
30.3.3. Object Layout Type and Layout Type Requirements . . 422
30.3.4. Flexible Files Layout Type and Layout Type 30.3.4. Flexible Files Layout Type and Layout Type
Requirements . . . . . . . . . . . . . . . . . . . . 422 Requirements . . . . . . . . . . . . . . . . . . . . 423
30.3.5. Needed Updates to Layout Specification Documents . . 425 30.3.5. Needed Updates to Layout Specification Documents . . 426
31. The pNFS File Layout Type . . . . . . . . . . . . . . . . . . 425 31. The pNFS File Layout Type . . . . . . . . . . . . . . . . . . 426
31.1. Recent Changes to the File Layout Type . . . . . . . . . 427 31.1. Recent Changes to the File Layout Type . . . . . . . . . 428
31.2. File Layout Type Motivation . . . . . . . . . . . . . . 428 31.2. File Layout Type Motivation . . . . . . . . . . . . . . 429
31.3. Protocol Feature Support for the Files Layout Type . . . 429 31.3. Protocol Feature Support for the Files Layout Type . . . 430
31.4. Storage Protocol for the Files Layout Type . . . . . . . 429 31.4. Storage Protocol for the Files Layout Type . . . . . . . 430
31.5. Client ID and Session Considerations . . . . . . . . . . 431 31.5. Client ID and Session Considerations . . . . . . . . . . 432
31.5.1. Sessions Considerations for Data Servers . . . . . . 433 31.5.1. Sessions Considerations for Data Servers . . . . . . 434
31.6. File Layout Definitions . . . . . . . . . . . . . . . . 434 31.6. File Layout Definitions . . . . . . . . . . . . . . . . 435
31.7. File Layout Data Types . . . . . . . . . . . . . . . . . 434 31.7. File Layout Data Types . . . . . . . . . . . . . . . . . 435
31.7.1. File Layout Hint-related Data Types . . . . . . . . 435 31.7.1. File Layout Hint-related Data Types . . . . . . . . 436
31.7.2. File Layout Content-related Data Types . . . . . . . 437 31.7.2. File Layout Content-related Data Types . . . . . . . 438
31.8. Interpreting the File Layout . . . . . . . . . . . . . . 440 31.8. Interpreting the File Layout . . . . . . . . . . . . . . 441
31.8.1. Determining the Stripe Unit Number . . . . . . . . . 440 31.8.1. Determining the Stripe Unit Number . . . . . . . . . 441
31.8.2. Interpreting the File Layout Using Sparse Packing . 440 31.8.2. Interpreting the File Layout Using Sparse Packing . 441
31.8.3. Interpreting the File Layout Using Dense Packing . . 443 31.8.3. Interpreting the File Layout Using Dense Packing . . 444
31.8.4. Sparse and Dense Stripe Unit Packing . . . . . . . . 446 31.8.4. Sparse and Dense Stripe Unit Packing . . . . . . . . 447
31.9. Multipathing to Data Servers . . . . . . . . . . . . . . 448 31.9. Multipathing to Data Servers . . . . . . . . . . . . . . 449
31.10. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 450 31.10. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 451
31.11. COMMIT through Metadata Server . . . . . . . . . . . . . 452 31.11. COMMIT through Metadata Server . . . . . . . . . . . . . 453
31.12. The Layout Iomode . . . . . . . . . . . . . . . . . . . 453 31.12. The Layout Iomode . . . . . . . . . . . . . . . . . . . 454
31.13. LAYOUTCOMMIT on file layouts . . . . . . . . . . . . . . 454 31.13. LAYOUTCOMMIT on file layouts . . . . . . . . . . . . . . 455
31.14. File Layout Type Control Protocol . . . . . . . . . . . 456 31.14. File Layout Type Control Protocol . . . . . . . . . . . 457
31.14.1. Control Protocol State Coordination . . . . . . . . 457 31.14.1. Control Protocol State Coordination . . . . . . . . 458
31.14.2. Control Protocol Authorization Coordination . . . . 460 31.14.2. Control Protocol Authorization Coordination . . . . 461
31.14.3. Control Protocol Layout Management . . . . . . . . 460 31.14.3. Control Protocol Layout Management . . . . . . . . 461
31.14.4. Control Protocol Role in Storage Allocation for File 31.14.4. Control Protocol Role in Storage Allocation for File
Layout Type . . . . . . . . . . . . . . . . . . . . . 460 Layout Type . . . . . . . . . . . . . . . . . . . . . 461
31.14.5. IO Validation for the Files Layout Type . . . . . . 461 31.14.5. IO Validation for the Files Layout Type . . . . . . 462
31.15. File Attributes . . . . . . . . . . . . . . . . . . . . 461 31.15. File Attributes . . . . . . . . . . . . . . . . . . . . 462
31.16. Data Server Component File Size . . . . . . . . . . . . 462 31.16. Data Server Component File Size . . . . . . . . . . . . 463
31.17. Revocation and Fencing for the Files Layout Type . . . . 463 31.17. Revocation and Fencing for the Files Layout Type . . . . 464
31.18. Layout/IO Conflicts for the Files Layout Type . . . . . 464 31.18. Layout/IO Conflicts for the Files Layout Type . . . . . 465
31.19. File Layout MDS-directed IO . . . . . . . . . . . . . . 465 31.19. File Layout MDS-directed IO . . . . . . . . . . . . . . 466
31.20. File Layout Handling of Mandatory Byte-Range Locks . . . 465 31.20. File Layout Handling of Mandatory Byte-Range Locks . . . 466
31.21. Layout Recall Issues for File Layout Type . . . . . . . 467 31.21. Layout Recall Issues for File Layout Type . . . . . . . 468
31.22. Restrictions on Layout Information Discard for File Layout 31.22. Restrictions on Layout Information Discard for File Layout
Type . . . . . . . . . . . . . . . . . . . . . . . . . 467 Type . . . . . . . . . . . . . . . . . . . . . . . . . 468
31.23. Dealing with Client and Server Failure . . . . . . . . . 468 31.23. Dealing with Client and Server Failure . . . . . . . . . 469
31.23.1. Dealing with MDS Failure . . . . . . . . . . . . . 469 31.23.1. Dealing with MDS Failure . . . . . . . . . . . . . 470
31.23.2. Dealing with Data Server Failure . . . . . . . . . 471 31.23.2. Dealing with Data Server Failure . . . . . . . . . 472
31.23.3. Dealing with Client Failure . . . . . . . . . . . . 473 31.23.3. Dealing with Client Failure . . . . . . . . . . . . 474
31.24. Dealing with Lease Expiration . . . . . . . . . . . . . 473
31.25. Security Issues for the File Layout Type . . . . . . . . 474 31.24. Dealing with Lease Expiration . . . . . . . . . . . . . 474
31.25. Security Issues for the File Layout Type . . . . . . . . 475
31.26. Necessary Changes to the Files Layout Type to Meet Layout 31.26. Necessary Changes to the Files Layout Type to Meet Layout
Type Requirements . . . . . . . . . . . . . . . . . . . 475 Type Requirements . . . . . . . . . . . . . . . . . . . 476
31.27. The File Layout Type and Layout Type Requirements . . . 476 31.27. The File Layout Type and Layout Type Requirements . . . 477
32. Internationalization . . . . . . . . . . . . . . . . . . . . 478 32. Internationalization . . . . . . . . . . . . . . . . . . . . 479
32.1. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 478 32.1. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 479
33. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 479 33. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 480
33.1. Error Definitions . . . . . . . . . . . . . . . . . . . 479 33.1. Error Definitions . . . . . . . . . . . . . . . . . . . 480
33.1.1. General Errors . . . . . . . . . . . . . . . . . . . 484 33.1.1. General Errors . . . . . . . . . . . . . . . . . . . 485
33.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 487 33.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 488
33.1.3. Compound Structure Errors . . . . . . . . . . . . . 489 33.1.3. Compound Structure Errors . . . . . . . . . . . . . 490
33.1.4. File System Errors . . . . . . . . . . . . . . . . . 491 33.1.4. File System Errors . . . . . . . . . . . . . . . . . 492
33.1.5. State Management Errors . . . . . . . . . . . . . . 493 33.1.5. State Management Errors . . . . . . . . . . . . . . 494
33.1.6. Security Errors . . . . . . . . . . . . . . . . . . 493 33.1.6. Security Errors . . . . . . . . . . . . . . . . . . 494
33.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 494 33.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 495
33.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 495 33.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 496
33.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 496 33.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 497
33.1.10. pNFS Errors . . . . . . . . . . . . . . . . . . . . 498 33.1.10. pNFS Errors . . . . . . . . . . . . . . . . . . . . 499
33.1.11. Session Use Errors . . . . . . . . . . . . . . . . . 499 33.1.11. Session Use Errors . . . . . . . . . . . . . . . . . 500
33.1.12. Session Management Errors . . . . . . . . . . . . . 500 33.1.12. Session Management Errors . . . . . . . . . . . . . 501
33.1.13. Client Management Errors . . . . . . . . . . . . . . 501 33.1.13. Client Management Errors . . . . . . . . . . . . . . 502
33.1.14. Delegation Errors . . . . . . . . . . . . . . . . . 502 33.1.14. Delegation Errors . . . . . . . . . . . . . . . . . 503
33.1.15. Attribute Handling Errors . . . . . . . . . . . . . 502 33.1.15. Attribute Handling Errors . . . . . . . . . . . . . 503
33.1.16. Obsoleted Errors . . . . . . . . . . . . . . . . . . 503 33.1.16. Obsoleted Errors . . . . . . . . . . . . . . . . . . 504
33.2. Operations and Their Valid Errors . . . . . . . . . . . 504 33.2. Operations and Their Valid Errors . . . . . . . . . . . 505
33.3. Callback Operations and Their Valid Errors . . . . . . . 521 33.3. Callback Operations and Their Valid Errors . . . . . . . 522
33.4. Errors and the Operations That Use Them . . . . . . . . 524 33.4. Errors and the Operations That Use Them . . . . . . . . 525
34. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 539 34. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 540
34.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 539 34.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 540
34.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 540 34.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 541
35. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 551 35. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 552
36. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 557 36. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 558
36.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 557 36.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 558
36.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 562 36.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 563
36.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 563 36.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 564
36.4. Operation 6: CREATE - Create a Non-Regular File 36.4. Operation 6: CREATE - Create a Non-Regular File
Object . . . . . . . . . . . . . . . . . . . . . . . . 566 Object . . . . . . . . . . . . . . . . . . . . . . . . 567
36.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting 36.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting
Recovery . . . . . . . . . . . . . . . . . . . . . . . 569 Recovery . . . . . . . . . . . . . . . . . . . . . . . 570
36.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 570 36.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 571
36.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 570 36.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 571
36.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 572 36.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 573
36.9. Operation 11: LINK - Create Link to a File . . . . . . . 573 36.9. Operation 11: LINK - Create Link to a File . . . . . . . 574
36.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 576 36.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 577
36.11. Operation 13: LOCKT - Test for Lock . . . . . . . . . . 581 36.11. Operation 13: LOCKT - Test for Lock . . . . . . . . . . 582
36.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 582 36.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 583
36.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 584 36.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 585
36.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 585 36.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 586
36.15. Operation 17: NVERIFY - Verify Difference in 36.15. Operation 17: NVERIFY - Verify Difference in
Attributes . . . . . . . . . . . . . . . . . . . . . . 587 Attributes . . . . . . . . . . . . . . . . . . . . . . 588
36.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 588 36.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 589
36.17. Operation 19: OPENATTR - Open Named Attribute 36.17. Operation 19: OPENATTR - Open Named Attribute
Directory . . . . . . . . . . . . . . . . . . . . . . . 610 Directory . . . . . . . . . . . . . . . . . . . . . . . 611
36.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File 36.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File
Access . . . . . . . . . . . . . . . . . . . . . . . . 611 Access . . . . . . . . . . . . . . . . . . . . . . . . 612
36.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 613 36.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 614
36.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 614 36.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 615
36.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 615 36.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 616
36.22. Operation 25: READ - Read from File . . . . . . . . . . 616 36.22. Operation 25: READ - Read from File . . . . . . . . . . 617
36.23. Operation 26: READDIR - Read Directory . . . . . . . . . 618 36.23. Operation 26: READDIR - Read Directory . . . . . . . . . 619
36.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 622 36.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 623
36.25. Operation 28: REMOVE - Remove File System Object . . . . 623 36.25. Operation 28: REMOVE - Remove File System Object . . . . 624
36.26. Operation 29: RENAME - Rename Directory Entry . . . . . 627 36.26. Operation 29: RENAME - Rename Directory Entry . . . . . 628
36.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 631 36.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 632
36.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 632 36.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 633
36.29. Operation 33: SECINFO - Obtain Available Security . . . 633 36.29. Operation 33: SECINFO - Obtain Available Security . . . 634
36.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 637 36.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 638
36.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 640 36.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 641
36.32. Operation 38: WRITE - Write to File . . . . . . . . . . 641 36.32. Operation 38: WRITE - Write to File . . . . . . . . . . 642
36.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 646 36.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 647
36.34. Operation 41: BIND_CONN_TO_SESSION - Associate Connection 36.34. Operation 41: BIND_CONN_TO_SESSION - Associate Connection
with Session . . . . . . . . . . . . . . . . . . . . . 648 with Session . . . . . . . . . . . . . . . . . . . . . 649
36.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 651 36.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 652
36.36. Operation 43: CREATE_SESSION - Create New Session and 36.36. Operation 43: CREATE_SESSION - Create New Session and
Confirm Client ID . . . . . . . . . . . . . . . . . . . 669 Confirm Client ID . . . . . . . . . . . . . . . . . . . 670
36.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 680 36.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 681
36.38. Operation 45: FREE_STATEID - Free Stateid with No 36.38. Operation 45: FREE_STATEID - Free Stateid with No
Locks . . . . . . . . . . . . . . . . . . . . . . . . . 681 Locks . . . . . . . . . . . . . . . . . . . . . . . . . 682
36.39. Operation 46: GET_DIR_DELEGATION - Get a Directory 36.39. Operation 46: GET_DIR_DELEGATION - Get a Directory
Delegation . . . . . . . . . . . . . . . . . . . . . . 682 Delegation . . . . . . . . . . . . . . . . . . . . . . 683
36.40. Operation 47: GETDEVICEINFO - Get Device Information . . 688 36.40. Operation 47: GETDEVICEINFO - Get Device Information . . 689
36.41. Operation 48: GETDEVICELIST - Get All Device Mappings for 36.41. Operation 48: GETDEVICELIST - Get All Device Mappings for
a File System . . . . . . . . . . . . . . . . . . . . . 691 a File System . . . . . . . . . . . . . . . . . . . . . 692
36.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using a 36.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using a
Layout . . . . . . . . . . . . . . . . . . . . . . . . 692 Layout . . . . . . . . . . . . . . . . . . . . . . . . 693
36.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 697 36.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 698
36.44. Operation 51: LAYOUTRETURN - Release Layout 36.44. Operation 51: LAYOUTRETURN - Release Layout
Information . . . . . . . . . . . . . . . . . . . . . . 708 Information . . . . . . . . . . . . . . . . . . . . . . 709
36.45. Operation 52: SECINFO_NO_NAME - Get Security on Unnamed 36.45. Operation 52: SECINFO_NO_NAME - Get Security on Unnamed
Object . . . . . . . . . . . . . . . . . . . . . . . . 712 Object . . . . . . . . . . . . . . . . . . . . . . . . 713
36.46. Operation 53: SEQUENCE - Supply Per-Procedure Sequencing 36.46. Operation 53: SEQUENCE - Supply Per-Procedure Sequencing
and Control . . . . . . . . . . . . . . . . . . . . . . 713 and Control . . . . . . . . . . . . . . . . . . . . . . 714
36.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 719 36.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 720
36.48. Operation 55: TEST_STATEID - Test Stateids for 36.48. Operation 55: TEST_STATEID - Test Stateids for
Validity . . . . . . . . . . . . . . . . . . . . . . . 722 Validity . . . . . . . . . . . . . . . . . . . . . . . 723
36.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 726
36.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 727
36.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims 36.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims
Finished . . . . . . . . . . . . . . . . . . . . . . . 727 Finished . . . . . . . . . . . . . . . . . . . . . . . 728
36.52. Operation 10044: ILLEGAL - Illegal Operation . . . . . . 731 36.52. Operation 10044: ILLEGAL - Illegal Operation . . . . . . 732
37. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 732 37. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 733
37.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 732 37.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 733
37.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 732 37.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 733
38. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 736 38. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 737
38.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 736 38.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 737
38.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 737 38.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 738
38.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from 38.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from
Client . . . . . . . . . . . . . . . . . . . . . . . . 738 Client . . . . . . . . . . . . . . . . . . . . . . . . 739
38.4. Operation 6: CB_NOTIFY - Notify Client Using Directory 38.4. Operation 6: CB_NOTIFY - Notify Client Using Directory
Delegations . . . . . . . . . . . . . . . . . . . . . . 742 Delegations . . . . . . . . . . . . . . . . . . . . . . 743
38.5. Operation 7: CB_PUSH_DELEG - Offer Previously Requested 38.5. Operation 7: CB_PUSH_DELEG - Offer Previously Requested
Delegation to Client . . . . . . . . . . . . . . . . . 758 Delegation to Client . . . . . . . . . . . . . . . . . 759
38.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable 38.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable
Objects . . . . . . . . . . . . . . . . . . . . . . . . 759 Objects . . . . . . . . . . . . . . . . . . . . . . . . 760
38.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal Resources 38.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal Resources
for Recallable Objects . . . . . . . . . . . . . . . . 762 for Recallable Objects . . . . . . . . . . . . . . . . 763
38.8. Operation 10: CB_RECALL_SLOT - Change Flow Control 38.8. Operation 10: CB_RECALL_SLOT - Change Flow Control
Limits . . . . . . . . . . . . . . . . . . . . . . . . 763 Limits . . . . . . . . . . . . . . . . . . . . . . . . 764
38.9. Operation 11: CB_SEQUENCE - Supply Backchannel Sequencing 38.9. Operation 11: CB_SEQUENCE - Supply Backchannel Sequencing
and Control . . . . . . . . . . . . . . . . . . . . . . 764 and Control . . . . . . . . . . . . . . . . . . . . . . 765
38.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending 38.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending
Delegation Wants . . . . . . . . . . . . . . . . . . . 767 Delegation Wants . . . . . . . . . . . . . . . . . . . 768
38.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of Possible 38.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of Possible
Lock Availability . . . . . . . . . . . . . . . . . . . 768 Lock Availability . . . . . . . . . . . . . . . . . . . 769
38.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of Device 38.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of Device
ID Changes . . . . . . . . . . . . . . . . . . . . . . 769 ID Changes . . . . . . . . . . . . . . . . . . . . . . 770
38.13. Operation 10044: CB_ILLEGAL - Illegal Callback 38.13. Operation 10044: CB_ILLEGAL - Illegal Callback
Operation . . . . . . . . . . . . . . . . . . . . . . . 772 Operation . . . . . . . . . . . . . . . . . . . . . . . 773
39. Security Considerations . . . . . . . . . . . . . . . . . . . 772 39. Security Considerations . . . . . . . . . . . . . . . . . . . 773
39.1. Issues with Inherited Security Considerations Section . 772 39.1. Issues with Inherited Security Considerations Section . 773
39.2. Threat Analysis . . . . . . . . . . . . . . . . . . . . 773 39.2. Threat Analysis . . . . . . . . . . . . . . . . . . . . 774
39.2.1. Threat Analysis for Use of Persistent Sessions and 39.2.1. Threat Analysis for Use of Persistent Sessions and
Locking State . . . . . . . . . . . . . . . . . . . . 773 Locking State . . . . . . . . . . . . . . . . . . . . 774
39.2.2. Threat Analysis for Use of pNFS . . . . . . . . . . 774 39.2.2. Threat Analysis for Use of pNFS . . . . . . . . . . 775
40. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 779 40. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 780
40.1. IANA Actions . . . . . . . . . . . . . . . . . . . . . . 779 40.1. IANA Actions . . . . . . . . . . . . . . . . . . . . . . 780
40.2. Named Attribute Definitions . . . . . . . . . . . . . . 779 40.2. Named Attribute Definitions . . . . . . . . . . . . . . 780
40.2.1. Initial Registry . . . . . . . . . . . . . . . . . . 780 40.2.1. Initial Registry . . . . . . . . . . . . . . . . . . 781
40.2.2. Updating Registrations . . . . . . . . . . . . . . . 780 40.2.2. Updating Registrations . . . . . . . . . . . . . . . 781
40.3. Device ID Notifications . . . . . . . . . . . . . . . . 780 40.3. Device ID Notifications . . . . . . . . . . . . . . . . 781
40.3.1. Initial Registry . . . . . . . . . . . . . . . . . . 781 40.3.1. Initial Registry . . . . . . . . . . . . . . . . . . 782
40.3.2. Updating Registrations . . . . . . . . . . . . . . . 781 40.3.2. Updating Registrations . . . . . . . . . . . . . . . 782
40.4. Object Recall Types . . . . . . . . . . . . . . . . . . 782 40.4. Object Recall Types . . . . . . . . . . . . . . . . . . 783
40.4.1. Initial Registry . . . . . . . . . . . . . . . . . . 783 40.4.1. Initial Registry . . . . . . . . . . . . . . . . . . 784
40.4.2. Updating Registrations . . . . . . . . . . . . . . . 783 40.4.2. Updating Registrations . . . . . . . . . . . . . . . 784
40.5. Layout Types . . . . . . . . . . . . . . . . . . . . . . 784
40.5. Layout Types . . . . . . . . . . . . . . . . . . . . . . 783 40.5.1. Initial Registry . . . . . . . . . . . . . . . . . . 785
40.5.1. Initial Registry . . . . . . . . . . . . . . . . . . 784 40.5.2. Updating Registrations . . . . . . . . . . . . . . . 786
40.5.2. Updating Registrations . . . . . . . . . . . . . . . 785
40.5.3. IANA-Related Requirements for Layout Type 40.5.3. IANA-Related Requirements for Layout Type
Specifications . . . . . . . . . . . . . . . . . . . 785 Specifications . . . . . . . . . . . . . . . . . . . 786
40.6. Path Variable Definitions . . . . . . . . . . . . . . . 785 40.6. Path Variable Definitions . . . . . . . . . . . . . . . 786
40.6.1. Path Variables Registry . . . . . . . . . . . . . . 786 40.6.1. Path Variables Registry . . . . . . . . . . . . . . 787
40.6.2. Values for the ${ietf.org:CPU_ARCH} Variable . . . . 787 40.6.2. Values for the ${ietf.org:CPU_ARCH} Variable . . . . 788
40.6.3. Values for the ${ietf.org:OS_TYPE} Variable . . . . 788 40.6.3. Values for the ${ietf.org:OS_TYPE} Variable . . . . 789
41. References . . . . . . . . . . . . . . . . . . . . . . . . . 788 41. References . . . . . . . . . . . . . . . . . . . . . . . . . 789
41.1. Normative References . . . . . . . . . . . . . . . . . . 789 41.1. Normative References . . . . . . . . . . . . . . . . . . 790
41.2. Informative References . . . . . . . . . . . . . . . . . 792 41.2. Informative References . . . . . . . . . . . . . . . . . 793
Appendix A. Nature of the Changes Being Made for This Update . . 795 Appendix A. Nature of the Changes Being Made for This Update . . 796
A.1. Reliance on NFSv4-wide Documents . . . . . . . . . . . . 796 A.1. Reliance on NFSv4-wide Documents . . . . . . . . . . . . 797
A.2. Adaptation of the NFSv4-wide Security Document to A.2. Adaptation of the NFSv4-wide Security Document to
v4.1-specific Features . . . . . . . . . . . . . . . . . 796 v4.1-specific Features . . . . . . . . . . . . . . . . . 797
A.3. Changes to Effect Necessary Cleanup and Correction . . . 797 A.3. Changes to Effect Necessary Cleanup and Correction . . . 798
Appendix B. Status of The Changes Being Made in this Update . . 799 Appendix B. Status of The Changes Being Made in this Update . . 800
B.1. Changes Completed So Far in this Update . . . . . . . . . 799 B.1. Changes Completed So Far in this Update . . . . . . . . . 800
B.2. Changes Made in this Update to Address NFSv4.1 Errata B.2. Changes Made in this Update to Address NFSv4.1 Errata
Reports . . . . . . . . . . . . . . . . . . . . . . . . . 800 Reports . . . . . . . . . . . . . . . . . . . . . . . . . 801
B.3. Changes Being Made Now in this Update . . . . . . . . . . 802 B.3. Changes Being Made Now in this Update . . . . . . . . . . 803
B.4. Changes That Will Need to be Made Later in this Update . 805 B.4. Changes That Will Need to be Made Later in this Update . 806
Appendix C. Work Done in Various Drafts . . . . . . . . . . . . 805 Appendix C. Work Done in Various Drafts . . . . . . . . . . . . 806
C.1. Changes Made in 5661bis Draft -00 . . . . . . . . . . . . 806 C.1. Changes Made in 5661bis Draft -00 . . . . . . . . . . . . 807
C.2. Changes Made in 5661bis Draft -01 . . . . . . . . . . . . 806 C.2. Changes Made in 5661bis Draft -01 . . . . . . . . . . . . 807
C.3. Changes Made in 5661bis Draft -02 . . . . . . . . . . . . 808 C.3. Changes Made in 5661bis Draft -02 . . . . . . . . . . . . 809
C.4. Changes Made in 5661bis Draft -03 . . . . . . . . . . . . 808 C.4. Changes Made in 5661bis Draft -03 . . . . . . . . . . . . 809
C.5. Changes Made in 5661bis Draft -04 . . . . . . . . . . . . 809 C.5. Changes Made in 5661bis Draft -04 . . . . . . . . . . . . 810
C.6. Changes Made in 5661bis Draft -05 . . . . . . . . . . . . 811 C.6. Changes Made in 5661bis Draft -05 . . . . . . . . . . . . 812
C.7. Changes Made in 5661bis Draft -06 . . . . . . . . . . . . 812 C.7. Changes Made in 5661bis Draft -06 . . . . . . . . . . . . 813
C.8. Changes Made in 5661bis Draft -07 . . . . . . . . . . . . 813 C.8. Changes Made in 5661bis Draft -07 . . . . . . . . . . . . 814
C.9. Changes Made in 5661bis Draft -08 . . . . . . . . . . . . 813 C.9. Changes Made in 5661bis Draft -08 . . . . . . . . . . . . 814
C.10. Changes Made in 5661bis Draft -09 . . . . . . . . . . . . 813 C.10. Changes Made in 5661bis Draft -09 . . . . . . . . . . . . 814
C.11. Changes Made in 5661bis Draft -10 . . . . . . . . . . . . 814 C.11. Changes Made in 5661bis Draft -10 . . . . . . . . . . . . 815
C.12. Changes Made in 5661bis Draft -11 . . . . . . . . . . . . 814 C.12. Changes Made in 5661bis Draft -11 . . . . . . . . . . . . 815
C.13. Changes Made in 8881bis Draft -00 . . . . . . . . . . . . 815 C.13. Changes Made in 8881bis Draft -00 . . . . . . . . . . . . 816
C.14. Changes Made in 8881bis Draft -01 . . . . . . . . . . . . 815 C.14. Changes Made in 8881bis Draft -01 . . . . . . . . . . . . 816
C.15. Changes Made in 8881bis Draft -02 . . . . . . . . . . . . 816 C.15. Changes Made in 8881bis Draft -02 . . . . . . . . . . . . 817
C.16. Changes Made in 8881bis Draft -03 . . . . . . . . . . . . 817 C.16. Changes Made in 8881bis Draft -03 . . . . . . . . . . . . 818
C.17. Changes Made in 8881bis Draft -04 . . . . . . . . . . . . 818 C.17. Changes Made in 8881bis Draft -04 . . . . . . . . . . . . 819
C.18. Changes Made in 8881bis Draft -05 . . . . . . . . . . . . 819 C.18. Changes Made in 8881bis Draft -05 . . . . . . . . . . . . 820
C.19. Changes Made in 8881bis Draft -06 . . . . . . . . . . . . 819 C.19. Changes Made in 8881bis Draft -06 . . . . . . . . . . . . 820
C.20. Changes Made in 8881bis Draft -07 . . . . . . . . . . . . 821 C.20. Changes Made in 8881bis Draft -07 . . . . . . . . . . . . 822
C.21. Changes Made in 8881bis Draft -08 . . . . . . . . . . . . 822 C.21. Changes Made in 8881bis Draft -08 . . . . . . . . . . . . 823
C.22. Changes Made in 8881bis Draft -09 . . . . . . . . . . . . 822 C.22. Changes Made in 8881bis Draft -09 . . . . . . . . . . . . 823
C.23. Changes Made in 8881bis Draft -10 . . . . . . . . . . . . 823 C.23. Changes Made in 8881bis Draft -10 . . . . . . . . . . . . 824
Appendix D. Issues Requiring Further Discussion . . . . . . . . 824 C.24. Changes Made in 8881bis Draft -11 . . . . . . . . . . . . 825
D.1. Appropriate Uses of RFC2119 Keywords . . . . . . . . . . 824 Appendix D. Issues Requiring Further Discussion . . . . . . . . 825
D.1.1. Appropriate Use of "SHOULD" and "SHOULD NOT" . . . . 825 D.1. Appropriate Uses of RFC2119 Keywords . . . . . . . . . . 825
D.1.2. Uses of "MUST" and "MUST NOT" that are Problematic . 827 D.1.1. Appropriate Use of "SHOULD" and "SHOULD NOT" . . . . 826
D.1.2. Uses of "MUST" and "MUST NOT" that are Problematic . 828
D.1.3. Issues Regarding Use of RFC2119 Keywords D.1.3. Issues Regarding Use of RFC2119 Keywords
"Sparingly" . . . . . . . . . . . . . . . . . . . . . 830 "Sparingly" . . . . . . . . . . . . . . . . . . . . . 831
D.1.4. Going Forward Regarding Use of RFC2119 Keywords . . . 832 D.1.4. Going Forward Regarding Use of RFC2119 Keywords . . . 833
D.2. Issues Regarding Proposed and Actual Changes . . . . . . 832 D.2. Issues Regarding Proposed and Actual Changes . . . . . . 833
D.2.1. Changes Regarding Request Aborts, Retries, and the D.2.1. Changes Regarding Request Aborts, Retries, and the
Session Model . . . . . . . . . . . . . . . . . . . . 833 Session Model . . . . . . . . . . . . . . . . . . . . 834
D.2.2. Issues Regarding Directory Delegation that Need to be D.2.2. Issues Regarding Directory Delegation that Need to be
Resolved . . . . . . . . . . . . . . . . . . . . . . 835 Resolved . . . . . . . . . . . . . . . . . . . . . . 836
D.2.3. Changes Regarding Memory Mapping . . . . . . . . . . 843 D.2.3. Changes Regarding Memory Mapping . . . . . . . . . . 844
D.2.4. Issues Regarding Handling of Persistence . . . . . . 844 D.2.4. Issues Regarding Handling of Persistence . . . . . . 845
D.2.5. Changes in Attribute Categorization . . . . . . . . . 849 D.2.5. Changes in Attribute Categorization . . . . . . . . . 850
D.2.6. Changes in Treatment of Attributes for Named Attribute D.2.6. Changes in Treatment of Attributes for Named Attribute
Directories . . . . . . . . . . . . . . . . . . . . . 849 Directories . . . . . . . . . . . . . . . . . . . . . 850
D.2.7. Changes Made as a Result of REJECTED Errata D.2.7. Changes Made as a Result of REJECTED Errata
Reports . . . . . . . . . . . . . . . . . . . . . . . 851 Reports . . . . . . . . . . . . . . . . . . . . . . . 852
D.2.8. Changes Made to Address Problems in Description of D.2.8. Changes Made to Address Problems in Description of
REMOVE/RENAME . . . . . . . . . . . . . . . . . . . . 852 REMOVE/RENAME . . . . . . . . . . . . . . . . . . . . 853
D.2.9. Changes Made to Address Lack of Clarity Regarding "The D.2.9. Changes Made to Address Lack of Clarity Regarding "The
Forgetful Model" . . . . . . . . . . . . . . . . . . 853 Forgetful Model" . . . . . . . . . . . . . . . . . . 854
D.2.10. Need for Replacement of RFC8434 . . . . . . . . . . . 854 D.2.10. Need for Replacement of RFC8434 . . . . . . . . . . . 855
D.2.11. Remaining Issues for Discussion After Replacement of D.2.11. Remaining Issues for Discussion After Replacement of
RFC8434 . . . . . . . . . . . . . . . . . . . . . . . 855 RFC8434 . . . . . . . . . . . . . . . . . . . . . . . 856
D.2.12. Layout-Type-Specificity for LAYOUTCOMMIT . . . . . . 858 D.2.12. Layout-Type-Specificity for LAYOUTCOMMIT . . . . . . 859
D.2.13. Layout-Type-Specificity for Layout Termination . . . 859 D.2.13. Layout-Type-Specificity for Layout Termination . . . 860
D.2.14. Possible Generalization Data Server Failure D.2.14. Possible Generalization Data Server Failure
Handling . . . . . . . . . . . . . . . . . . . . . . 860 Handling . . . . . . . . . . . . . . . . . . . . . . 861
D.2.15. Discussion Needed re Status of RFC5663 . . . . . . . 860 D.2.15. Discussion Needed re Status of RFC5663 . . . . . . . 861
D.2.16. Discussion of Possible Additional Access Flags . . . 861 D.2.16. Discussion of Possible Additional Access Flags . . . 862
D.2.17. Discussion of Named Attributes and Their Possible D.2.17. Discussion of Named Attributes and Their Possible
Relationship with Extended Attributes . . . . . . . . 861 Relationship with Extended Attributes . . . . . . . . 862
D.2.18. Discussion of Neglected Caching Needs . . . . . . . . 864 D.2.18. Discussion of Neglected Caching Needs . . . . . . . . 865
D.2.19. Discussion Regarding Ways of Avoiding Cache D.2.19. Discussion Regarding Ways of Avoiding Cache
Incoherence . . . . . . . . . . . . . . . . . . . . . 865 Incoherence . . . . . . . . . . . . . . . . . . . . . 866
D.2.20. Discussion Regarding Possible Semantic Changes to D.2.20. Discussion Regarding Possible Semantic Changes to
Address Cache Incoherence . . . . . . . . . . . . . . 867 Address Cache Incoherence . . . . . . . . . . . . . . 868
D.2.21. Discussion of Proper Placement to Address Interactions D.2.21. Discussion of Proper Placement to Address Interactions
between RFCs 8178 and 8404 . . . . . . . . . . . . . 870 between RFCs 8178 and 8404 . . . . . . . . . . . . . 871
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 872 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 873
Acknowledgments for This Update . . . . . . . . . . . . . . . 872 Acknowledgments for This Update . . . . . . . . . . . . . . . 873
Acknowledgments for Previous Specification Documents . . . . 873 Acknowledgments for Previous Specification Documents . . . . 874
RFC Editor Notes . . . . . . . . . . . . . . . . . . . . . . . 874 RFC Editor Notes . . . . . . . . . . . . . . . . . . . . . . . 875
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 875 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 876
1. Introduction to this Update 1. Introduction to this Update
This document is intended to be the basis for a revised and updated This document is intended to be the basis for an effort to provide a
specification of NFSv4.1. Unlike [RFC8881], which provided a revised and updated specification of NFSv4.1. Unlike [RFC8881],
limited-function update to [RFC5661], this document has a broader which provided a limited-function update to [RFC5661], this document
mandate and will do the following: and the associated respecification effort has a broader mandate and
will do the following:
* Revise any text known to be wrong or otherwise inappropriate. * Revise any text known to be wrong or otherwise inappropriate.
Such text will not be retained as it has been merely because it is Such text will not be retained as it has been merely because it is
outside a limited pre-specified change scope. outside a limited pre-specified change scope.
This includes changes suggested by errata reports for RFC's 5661 This includes changes suggested by errata reports for RFC's 5661
and 8881, most of which wre marked as ACCEPzTEd or HELD OVER. and 8881, most of which wre marked as ACCEPTEd or HELD OVER.
Also included were some errata reports with the status REJECTED, Also included were some errata reports with the status REJECTED,
where there is a Working Group Consensus that change is necessary. where there is a Working Group Consensus that change is necessary.
There were erratta reports (e.g. 8705, 8716) which had not been There were erratta reports (e.g. 8705, 8716) which had not been
verified but whose editoral nature made it necessary to adopt them verified but whose editoral nature made it necessary to adopt them
in this document. in this document.
* Address major mistakes resulting from misunderstanding or
miasapplication of the requirements of [RFC2624] or the security
requirements of internet protocols whcih was not addressed
appropriately in that document. For discussion of the means by
which such mistakes can be addressed in the context of this
respecification effort and within the rules established by
[RFC8178], see Section 1.3
* Correct protocol defects, that, by their nature, can and should be * Correct protocol defects, that, by their nature, can and should be
addressed via a limited use of the extension mechanism described addressed via a limited use of the extension mechanism described
in Section 9 of [RFC8178]. in Section 9 of [RFC8178].
For more discussion of the correction of existing protocol For more discussion of the correction of existing protocol
defects, see Section 1.4. This discussion, which covers protocol defects, see Section 1.5. This discussion, which covers protocol
defects addressed in NFSv4-wide documents in addition to this defects addressed in NFSv4-wide documents in addition to this
document, will focus on how compatibility issues are addressed document, will focus on how compatibility issues are addressed
when defects are corrected. It will also pay attention to the when defects are corrected. It will also pay attention to the
question of when XDR extensions in a bis document are necessary as question of when XDR extensions in a bis document are necessary as
part of providing features already included (albeit incorrectly) part of providing features already included (albeit incorrectly)
in the current minor version as opposed to deferring such in the current minor version as opposed to deferring such
extensions to later minor versions. extensions to later minor versions.
* Incorporate the necessary changes to the description of NFSv4.1 * Incorporate the necessary changes to the description of NFSv4.1
that were published in documents marked as updating [RFC8881], in that were published in documents marked as updating [RFC8881], in
this case [RFC8434]. this case [RFC8434].
This incorporation involved a major advance in our understanding This incorporation involved a major advance in our understanding
of the structure and benefits of pNFS and the possibilities of its of the structure and benefits of pNFS and the possibilities of its
further extension. See Section 1.5. further extension. See Section 1.6.
As a result of restructurring done as part of the above, this As a result of restructurring done as part of the above, this
document serves as the lead document for a broader respecfication of document serves as the lead document for a broader respecfication of
NSv4.1. As part of this respecification, areas of the protocol that NSv4.1. As part of this respecification, areas of the protocol that
did not differ substantially in exiting minor versions were dealt did not differ substantially in exiting minor versions were dealt
with in new NFSv4-wide documents. with in new NFSv4-wide documents.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
skipping to change at page 21, line 35 skipping to change at page 21, line 39
The availability of new transport-level security features such as The availability of new transport-level security features such as
those provided by RPC-with-TLS [RFC9289] provides a basis to those provided by RPC-with-TLS [RFC9289] provides a basis to
correct many of the above issues. correct many of the above issues.
In providing that sort of correction, we need to be careful not to In providing that sort of correction, we need to be careful not to
declare existing implementations non-compliant post facto, while declare existing implementations non-compliant post facto, while
still providing adequate warning of the security consequences of still providing adequate warning of the security consequences of
continuing to use the NFS Version 4 protocol insecurely, as continuing to use the NFS Version 4 protocol insecurely, as
described in previous specifications. described in previous specifications.
1.3. Possibility of Compatibility Issues 1.3. Addressing Major Mistakes
While it might be unexpected to address major mistakes including
design errors within a respecification effort such as this, there is
no real alternative for misdesigned OPTIONAL features. This is
despite tht fact that the effort is based on a bis document and
includes NFSv4-wide revisions of specific protocol areas that are
taking on a role like that of bis ducuments.
While a major misdesign within the core of NFSv4 would call for a
major document rewrite, we need to do that work as part of the
mandate of this respecfication effort for the minor version in which
the feature is embedded, despite the atypical nature of the required
revisions.
The infrastructure defined in [RFC8178] would allow the consequences
of any such misdesign to be addressed by adding a replacemet feature
as long as compatibility is maintaned. Despite this opportunity, it
might be difficult to design, implement and review such replacement
feaues in the limited time available to ccomplish a respecification
effort.
In many cases dealt with in this respecification effort, these
difficulties are exacerbated by the fact that the original errors
have occurred decades ago ,when NFSv4.0 was being defined, so that we
need to address coping mechanisms that have convinced many working
group members that the issues might be addressed, without disturbing
design assumptions that have been shown to be invalid.
As a result of these cirscmtnces, we had three options in dealing
with these difficult issues.
* Deferring the existing flawed approach as outside the scope of
NFSv4.1 and deferring the necessary replacement to an extension
outside NFSb4.1.
This approach was taken in the caso of the unsuitability of the
security negotiation framework adopted to provide protecion for
data in flight limiited to specfic regions of the namespace.
While it was possible to adapt the negotiaton to better support
use of connection-orienred security facilities, this was not done
and the necessary anges were deferred a forthcoing extension.
* Retaining a substantial part of the mistaken implementation, while
deferring other parts to later extensions, depite the fact that
NFSv4.1 is left withe the unfortunate consequences of the mistaken
design.
This approach was taken to deal with the profound
underspecification of ACL-baaed authorization semantics. In this
case the consequences were to create the possibility of many
variant approaches so that we ere nable to bound the time
necessary to provide a unified approach to many areas. For more
detail, regarding the ways in which the flexibility provided by
[RFC8178] was used, see REFTBD22.
* Supporting a replacement or addition as a defect correction as
rovided for by [RFC8178].
The inadequate support for the secuity of data in flight was dealt
with by adding a recommendation that connection-baed faclities be
used as described in more detail in REFTBD21.
While this issue arose durig the definition, it cannot be
chacteized as a "defect" in that context since, at the time, there
was no alternative, giving te lack of TLS at that time. With
regard to the specification of NFSv4.1 this problem can be
considered as an RFC8178-correctible defect, although
compatibility issues prevent it being made a requiremen.
1.4. Possibility of Compatibility Issues
Because this document or other documents that are part of this Because this document or other documents that are part of this
specification update might make changes to matters previously respecification effort might make changes to matters previously
discussed in [RFC8881], the possibility of compatibility issues discussed in [RFC8881], the possibility of compatibility issues
cannot be excluded. cannot be excluded.
However, the likelihood of such issues arising is expected to be low However, the likelihood of such issues arising is expected to be low
because: because:
* In many cases, descriptions within [RFC8881] differed from the * In many cases, descriptions within [RFC8881] differed from the
existing implementations and change was necessary to avoid existing implementations and change was necessary to avoid
directing implementers to create implementations that could not directing implementers to create implementations that could not
interoperate with existing implementations. interoperate with existing implementations.
skipping to change at page 22, line 21 skipping to change at page 23, line 47
* In some cases, problems in the protocol as previously are being * In some cases, problems in the protocol as previously are being
corrected as described in Section 9 of [RFC8178], by creating corrected as described in Section 9 of [RFC8178], by creating
OPTIONAL protocol extensions. In such cases, implementations OPTIONAL protocol extensions. In such cases, implementations
unaware of the extensions will function as they did before, while unaware of the extensions will function as they did before, while
others have the option of using the extensions when interacting others have the option of using the extensions when interacting
with an implementation supporting the extension. with an implementation supporting the extension.
Specific updates are dealt with in the following subsections: Specific updates are dealt with in the following subsections:
* Updates in RFCTBD10 are addressed in Section 1.3.1. * Updates in RFCTBD10 are addressed in Section 1.4.1.
* Updates in new NFSv4-wide documents are discussed un * Updates in new NFSv4-wide documents are discussed un
Section 1.3.2. Section 1.4.2.
* Updates in RFCTBD30 are addressed in Section 1.3.3. * Updates in RFCTBD30 are addressed in Section 1.4.3.
1.3.1. Compatibility issues for RFCTBD10 1.4.1. Compatibility issues for RFCTBD10
This document introduces a number of potential incompatibilities that This document introduces a number of potential incompatibilities that
either cannot be realized or could only be realized in situations either cannot be realized or could only be realized in situations
highly unlikely to exist. For discussion of the reasons such highly unlikely to exist. For discussion of the reasons such
incompatibilities are highly unlikely to be problematic, see the rest incompatibilities are highly unlikely to be problematic, see the rest
of this section which also explains the needs for the changes. of this section which also explains the needs for the changes.
One important example concerns the conversion of the attributes mode, One important example concerns the conversion of the attributes mode,
owner, and owner_group from OPTIONAL to REQUIRED. Since the vast owner, and owner_group from OPTIONAL to REQUIRED. Since the vast
majority of servers support these attributes and the vast majority of majority of servers support these attributes and the vast majority of
skipping to change at page 25, line 16 skipping to change at page 26, line 33
defects as discussed in Section 9 of [RFC8178]. In addition the defects as discussed in Section 9 of [RFC8178]. In addition the
added requirement for delegation recall on certain changes to the added requirement for delegation recall on certain changes to the
directory will not lead to incompatibility since the server is directory will not lead to incompatibility since the server is
free to recall delegations as it chooses. In the case of possible free to recall delegations as it chooses. In the case of possible
existing servers that fail to recall the delegation in such cases, existing servers that fail to recall the delegation in such cases,
they will become non-compliant. However, this fact is not they will become non-compliant. However, this fact is not
troublesome as we will be going from a compliant server that does troublesome as we will be going from a compliant server that does
not work correctly to a non-compliant one, with the non-compliance not work correctly to a non-compliant one, with the non-compliance
being an important cue to fix the server. being an important cue to fix the server.
1.3.2. Compatibility issues for NFSv4-wide Documents 1.4.2. Compatibility issues for NFSv4-wide Documents
For these three NFSv4-wide documents, a major implementation area was For these three NFSv4-wide documents, a major implementation area was
respecified because of major problem in the existing NFSv4.1 respecified because of major problem in the existing NFSv4.1
descriptions of these areas. Because the replacement text was descriptions of these areas. Because the replacement text was
intended to reflect the actual implementation, the likelihood of intended to reflect the actual implementation, the likelihood of
incompatibilities is quite low: incompatibilities is quite low:
* RFCTBD20 respecified internationalization in a fashion quite * RFCTBD20 respecified internationalization in a fashion quite
different from the way it is specified in [RFC5661] and [RFC8881]. different from the way it is specified in [RFC5661] and [RFC8881].
skipping to change at page 26, line 43 skipping to change at page 28, line 11
The one possible formal incompatibility arises from the three ACE The one possible formal incompatibility arises from the three ACE
mask bits corresponding to the POSIX R, W, and X bits. support mask bits corresponding to the POSIX R, W, and X bits. support
for these are now REQUIRED whereas previously it had been for these are now REQUIRED whereas previously it had been
suggested that they were effectively optional along with all the suggested that they were effectively optional along with all the
other ACE mask bits. The chance of this being a problem is low other ACE mask bits. The chance of this being a problem is low
since, we have not heard any discussion of server without support since, we have not heard any discussion of server without support
for all of these bits and the difficulty of adopting to POSIX for all of these bits and the difficulty of adopting to POSIX
semantics, of such implementations existed would certainly have semantics, of such implementations existed would certainly have
led to Working Group discussion of the issue. led to Working Group discussion of the issue.
1.3.3. Compatibility issues for RFCTBD30 1.4.3. Compatibility issues for RFCTBD30
These changes can be divided into three groups: These changes can be divided into three groups:
* In many cases, the XDR changes consist of changes in the typedef * In many cases, the XDR changes consist of changes in the typedef
naming structure, with no change to the structure of messages naming structure, with no change to the structure of messages
described by the XDR. As a result, compatibility issues are not described by the XDR. As a result, compatibility issues are not
expected to arise. expected to arise.
* Many changes cannot create incompatibilities because the change * Many changes cannot create incompatibilities because the change
consists only of changed names of typedefs. Such changes were consists only of changed names of typedefs. Such changes were
skipping to change at page 27, line 24 skipping to change at page 28, line 39
is indicated in comments, so there is no XDR change to generate an is indicated in comments, so there is no XDR change to generate an
incompatibility. incompatibility.
* All substantive XDR changes take the form of XDR extensions as * All substantive XDR changes take the form of XDR extensions as
provided for by Section 9 of [RFC8178]. As a result, provided for by Section 9 of [RFC8178]. As a result,
implementations unaware of the change will function as they dis implementations unaware of the change will function as they dis
previously, while those that are aware of extension have the previously, while those that are aware of extension have the
option of adapting to the support or non-support by the peer option of adapting to the support or non-support by the peer
implementation. implementation.
1.4. Addressing Protocol Defects Via XDR Changes 1.5. Addressing Protocol Defects Via XDR Changes
This section provides an overview of situations in which it was This section provides an overview of situations in which it was
necessary to change the protocol XDR to correct specification issues necessary to change the protocol XDR to correct specification issues
that needed to be addressed as part of the respecification effort. that needed to be addressed as part of the respecification effort.
Although all these issues can, from today's perspective, be viewed as Although all these issues can, from today's perspective, be viewed as
arising from mistakes, it is not always clear whether that arising from mistakes, it is not always clear whether that
description is appropriate given the knowledge available when the description is appropriate given the knowledge available when the
decisions were made. In any case, the fact that we would have done decisions were made. In any case, the fact that we would have done
something different if the decision were made today does not imply something different if the decision were made today does not imply
that the bis document should adopt that approach. The following that the bis document should adopt that approach. The following
skipping to change at page 33, line 15 skipping to change at page 34, line 32
Formerly considered troublesome even in the AUTH_SYS case Formerly considered troublesome even in the AUTH_SYS case
despite the fact that there is no explanation given as to how to despite the fact that there is no explanation given as to how to
effect mapping between numeric ids and strings. Instead, it is effect mapping between numeric ids and strings. Instead, it is
assumed that client and server will somehow agree to do this assumed that client and server will somehow agree to do this
without the specification making it possible or giving a without the specification making it possible or giving a
convincing reason that such mapping is needed. convincing reason that such mapping is needed.
Of the above, only the items 7, 8, 9, 10, and 14 required protocol Of the above, only the items 7, 8, 9, 10, and 14 required protocol
extension to resolve. All will to be incorporated in RFCTBD30. extension to resolve. All will to be incorporated in RFCTBD30.
1.5. Incorporation of RFC8434 1.6. Incorporation of RFC8434
The incorporation of [RFC8434], originally written to clarify the The incorporation of [RFC8434], originally written to clarify the
requirements for new layout types, resulted in a deep and significant requirements for new layout types, resulted in a deep and significant
improvement in our understanding of pNFS-related features of the improvement in our understanding of pNFS-related features of the
protocol and how various layout types deal with similar issues. protocol and how various layout types deal with similar issues.
As a consequence, the original description of pNFS, formerly in As a consequence, the original description of pNFS, formerly in
Sections 12 and 13 of [RFC8881] has been restructured as three top- Sections 12 and 13 of [RFC8881] has been restructured as three top-
level sections in the revised NFsv4.1 specification: level sections in the revised NFsv4.1 specification:
skipping to change at page 795, line 5 skipping to change at page 796, line 5
[RFC7931] Noveck, D., Ed., Shivam, P., Lever, C., and B. Baker, [RFC7931] Noveck, D., Ed., Shivam, P., Lever, C., and B. Baker,
"NFSv4.0 Migration: Specification Update", RFC 7931, "NFSv4.0 Migration: Specification Update", RFC 7931,
DOI 10.17487/RFC7931, July 2016, DOI 10.17487/RFC7931, July 2016,
<https://www.rfc-editor.org/info/rfc7931>. <https://www.rfc-editor.org/info/rfc7931>.
[RFC8434] Haynes, T., "Requirements for Parallel NFS (pNFS) Layout [RFC8434] Haynes, T., "Requirements for Parallel NFS (pNFS) Layout
Types", RFC 8434, DOI 10.17487/RFC8434, August 2018, Types", RFC 8434, DOI 10.17487/RFC8434, August 2018,
<https://www.rfc-editor.org/info/rfc8434>. <https://www.rfc-editor.org/info/rfc8434>.
[RFC2624] Shepler, S., "NFS Version 4 Design Considerations",
RFC 2624, DOI 10.17487/RFC2624, June 1999,
<https://www.rfc-editor.org/info/rfc2624>.
[RFC3010] Shepler, S., Callaghan, B., Robinson, D., Thurlow, R., [RFC3010] Shepler, S., Callaghan, B., Robinson, D., Thurlow, R.,
Beame, C., Eisler, M., and D. Noveck, "NFS version 4 Beame, C., Eisler, M., and D. Noveck, "NFS version 4
Protocol", RFC 3010, DOI 10.17487/RFC3010, December 2000, Protocol", RFC 3010, DOI 10.17487/RFC3010, December 2000,
<https://www.rfc-editor.org/info/rfc3010>. <https://www.rfc-editor.org/info/rfc3010>.
[I-D.dnoveck-nfsv4-security] [I-D.dnoveck-nfsv4-security]
Noveck, D., "Security for the NFSv4 Protocols", Work in Noveck, D., "Security for the NFSv4 Protocols", Work in
Progress, Internet-Draft, draft-dnoveck-nfsv4-security-16, Progress, Internet-Draft, draft-dnoveck-nfsv4-security-16,
10 September 2026, <https://datatracker.ietf.org/doc/html/ 10 September 2026, <https://datatracker.ietf.org/doc/html/
draft-dnoveck-nfsv4-security-16>. draft-dnoveck-nfsv4-security-16>.
skipping to change at page 811, line 29 skipping to change at page 812, line 29
anyone other than the delegation holder cause a recall of a anyone other than the delegation holder cause a recall of a
delegation. In particular, the case of changes done by NFSv4.0 delegation. In particular, the case of changes done by NFSv4.0
clients needed clarification as did the rules for write delegations. clients needed clarification as did the rules for write delegations.
Added a discussion of the defects fixed as part of the rfc8881bis Added a discussion of the defects fixed as part of the rfc8881bis
effort, focusing on the possibility of compatibility issues and the effort, focusing on the possibility of compatibility issues and the
limited use of protocol extension, as provided for in Section 9 of limited use of protocol extension, as provided for in Section 9 of
[RFC8178]. This work included: [RFC8178]. This work included:
* Adding a summary of the work done to correct existing protocol * Adding a summary of the work done to correct existing protocol
defects in a new Section 1.4 defects in a new Section 1.5
* Extension of the notification enum to enable changes discussed * Extension of the notification enum to enable changes discussed
below to enable implementation of directory delegations. below to enable implementation of directory delegations.
* Preliminary discussion of a new OPTIONAL attribute aclchoices to * Preliminary discussion of a new OPTIONAL attribute aclchoices to
avoid having to wait for v4.2 to implement an aclfeatures avoid having to wait for v4.2 to implement an aclfeatures
attribute, as previously anticipated. attribute, as previously anticipated.
Made a series of changes to the discussion of directory delegations Made a series of changes to the discussion of directory delegations
in Appendix D.2.2 and elsewhere. This work was prompted by in Appendix D.2.2 and elsewhere. This work was prompted by
skipping to change at page 824, line 20 skipping to change at page 825, line 20
architectural role of pNFS as oopposed to the original motivation architectural role of pNFS as oopposed to the original motivation
reflected in the name of the feature. reflected in the name of the feature.
* Changes to Section 2.8.2 to de-emphasise parallelism no always * Changes to Section 2.8.2 to de-emphasise parallelism no always
present ) in favor of a separate data access path which is the present ) in favor of a separate data access path which is the
core nnovatio. core nnovatio.
* Changes to Section 4 to stress theg role of alternate data paths * Changes to Section 4 to stress theg role of alternate data paths
and their likely uses. and their likely uses.
C.24. Changes Made in 8881bis Draft -11
Made clearer the role of the respecfication effort by:
* Introducing the concept of respecification effort earlier in the
docment
* Adding a new bullet item to the list of goals in Section 1 devoted
to the need to addressing major errors.
* Adding a new Section 1.3 dealing with the process issues of
adressing major mistakes including design error in the context of
the respecification effort.
Appendix D. Issues Requiring Further Discussion Appendix D. Issues Requiring Further Discussion
This Appendix discusses issues that the working group needs to This Appendix discusses issues that the working group needs to
discuss before making decisions regarding potentially necessary discuss before making decisions regarding potentially necessary
specification changes. Despite the need for working group decisions specification changes. Despite the need for working group decisions
on certain policy matters, some of the specific examples cited have on certain policy matters, some of the specific examples cited have
already been addressed by revised text within the draft specification already been addressed by revised text within the draft specification
proper. proper.
D.1. Appropriate Uses of RFC2119 Keywords D.1. Appropriate Uses of RFC2119 Keywords
 End of changes. 102 change blocks. 
678 lines changed or deleted 778 lines changed or added

This html diff was produced by rfcdiff 1.49. The latest version is available from https://github.com/ietf-tools/rfcdiff