draft-ietf-nfsv4-federated-fs-admin-09.txt   draft-ietf-nfsv4-federated-fs-admin-10.txt 
NFSv4 Working Group J. Lentini NFSv4 Working Group J. Lentini
Internet-Draft C. Everhart Internet-Draft C. Everhart
Intended status: Standards Track NetApp Intended status: Standards Track NetApp
Expires: December 8, 2011 D. Ellard Expires: November 25, 2012 D. Ellard
Raytheon BBN Technologies Raytheon BBN Technologies
R. Tewari R. Tewari
M. Naik M. Naik
IBM Almaden IBM Almaden
June 6, 2011 May 24, 2012
Administration Protocol for Federated Filesystems Administration Protocol for Federated Filesystems
draft-ietf-nfsv4-federated-fs-admin-09 draft-ietf-nfsv4-federated-fs-admin-10
Abstract Abstract
This document describes the administration protocol for a federated This document describes the administration protocol for a federated
file system that enables file access and namespace traversal across file system that enables file access and namespace traversal across
collections of independently administered fileservers. The protocol collections of independently administered fileservers. The protocol
specifies a set of interfaces by which fileservers with different specifies a set of interfaces by which fileservers with different
administrators can form a fileserver federation that provides a administrators can form a fileserver federation that provides a
namespace composed of the filesystems physically hosted on and namespace composed of the filesystems physically hosted on and
exported by the constituent fileservers. exported by the constituent fileservers.
skipping to change at page 1, line 47 skipping to change at page 1, line 47
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 http://datatracker.ietf.org/drafts/current/. Drafts is at http://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 December 8, 2011. This Internet-Draft will expire on November 25, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 3, line 20 skipping to change at page 3, line 20
4. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1. FedFsNsdbName Equality . . . . . . . . . . . . . . . . . . 16 4.1. FedFsNsdbName Equality . . . . . . . . . . . . . . . . . . 16
5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1. FEDFS_NULL . . . . . . . . . . . . . . . . . . . . . . . . 17 5.1. FEDFS_NULL . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 17 5.1.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.2. Description . . . . . . . . . . . . . . . . . . . . . 17 5.1.2. Description . . . . . . . . . . . . . . . . . . . . . 17
5.1.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 17 5.1.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2. FEDFS_CREATE_JUNCTION . . . . . . . . . . . . . . . . . . 17 5.2. FEDFS_CREATE_JUNCTION . . . . . . . . . . . . . . . . . . 17
5.2.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.2. Description . . . . . . . . . . . . . . . . . . . . . 17 5.2.2. Description . . . . . . . . . . . . . . . . . . . . . 17
5.2.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3. FEDFS_DELETE_JUNCTION . . . . . . . . . . . . . . . . . . 19 5.3. FEDFS_DELETE_JUNCTION . . . . . . . . . . . . . . . . . . 19
5.3.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 19 5.3.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 19
5.3.2. Description . . . . . . . . . . . . . . . . . . . . . 19 5.3.2. Description . . . . . . . . . . . . . . . . . . . . . 19
5.3.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 20 5.3.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 20
5.4. FEDFS_LOOKUP_JUNCTION . . . . . . . . . . . . . . . . . . 21 5.4. FEDFS_LOOKUP_JUNCTION . . . . . . . . . . . . . . . . . . 21
5.4.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 21 5.4.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 21
5.4.2. Description . . . . . . . . . . . . . . . . . . . . . 21 5.4.2. Description . . . . . . . . . . . . . . . . . . . . . 21
5.4.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 23 5.4.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 23
5.5. FEDFS_CREATE_REPLICATION . . . . . . . . . . . . . . . . . 24 5.5. FEDFS_CREATE_REPLICATION . . . . . . . . . . . . . . . . . 24
5.5.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 24 5.5.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 24
5.5.2. Description . . . . . . . . . . . . . . . . . . . . . 24 5.5.2. Description . . . . . . . . . . . . . . . . . . . . . 24
5.5.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 25 5.5.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 25
5.6. FEDFS_DELETE_REPLICATION . . . . . . . . . . . . . . . . . 26 5.6. FEDFS_DELETE_REPLICATION . . . . . . . . . . . . . . . . . 26
5.6.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 26 5.6.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 26
5.6.2. Description . . . . . . . . . . . . . . . . . . . . . 26 5.6.2. Description . . . . . . . . . . . . . . . . . . . . . 26
5.6.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 26 5.6.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 27
5.7. FEDFS_LOOKUP_REPLICATION . . . . . . . . . . . . . . . . . 27 5.7. FEDFS_LOOKUP_REPLICATION . . . . . . . . . . . . . . . . . 27
5.7.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 27 5.7.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 27
5.7.2. Description . . . . . . . . . . . . . . . . . . . . . 27 5.7.2. Description . . . . . . . . . . . . . . . . . . . . . 27
5.7.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 28 5.7.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 28
5.8. FEDFS_SET_NSDB_PARAMS . . . . . . . . . . . . . . . . . . 28 5.8. FEDFS_SET_NSDB_PARAMS . . . . . . . . . . . . . . . . . . 28
5.8.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 28 5.8.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 28
5.8.2. Description . . . . . . . . . . . . . . . . . . . . . 28 5.8.2. Description . . . . . . . . . . . . . . . . . . . . . 29
5.8.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 29 5.8.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 29
5.9. FEDFS_GET_NSDB_PARAMS . . . . . . . . . . . . . . . . . . 29 5.9. FEDFS_GET_NSDB_PARAMS . . . . . . . . . . . . . . . . . . 30
5.9.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 29 5.9.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 30
5.9.2. Description . . . . . . . . . . . . . . . . . . . . . 30 5.9.2. Description . . . . . . . . . . . . . . . . . . . . . 30
5.9.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 30 5.9.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 30
5.10. FEDFS_GET_LIMITED_NSDB_PARAMS . . . . . . . . . . . . . . 30 5.10. FEDFS_GET_LIMITED_NSDB_PARAMS . . . . . . . . . . . . . . 30
5.10.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 30 5.10.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 31
5.10.2. Description . . . . . . . . . . . . . . . . . . . . . 31 5.10.2. Description . . . . . . . . . . . . . . . . . . . . . 31
5.10.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 31 5.10.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 31
6. Security Considerations . . . . . . . . . . . . . . . . . . . 32 6. Security Considerations . . . . . . . . . . . . . . . . . . . 32
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32
8. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 8. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34
9.1. Normative References . . . . . . . . . . . . . . . . . . . 34 9.1. Normative References . . . . . . . . . . . . . . . . . . . 34
9.2. Informative References . . . . . . . . . . . . . . . . . . 35 9.2. Informative References . . . . . . . . . . . . . . . . . . 35
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 36 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 36
skipping to change at page 5, line 17 skipping to change at page 5, line 17
A federated filesystem enables file access and namespace traversal in A federated filesystem enables file access and namespace traversal in
a uniform, secure and consistent manner across multiple independent a uniform, secure and consistent manner across multiple independent
fileservers within an enterprise (and possibly across multiple fileservers within an enterprise (and possibly across multiple
enterprises) with reasonably good performance. enterprises) with reasonably good performance.
Traditionally, building a namespace that spans multiple fileservers Traditionally, building a namespace that spans multiple fileservers
has been difficult for two reasons. First, the fileservers that has been difficult for two reasons. First, the fileservers that
export pieces of the namespace are often not in the same export pieces of the namespace are often not in the same
administrative domain. Second, there is no standard mechanism for administrative domain. Second, there is no standard mechanism for
the fileservers to cooperatively present the namespace. Fileservers the fileservers to cooperatively present the namespace. Fileservers
may provide proprietary management tools and in some cases an might provide proprietary management tools and in some cases an
administrator may be able to use the proprietary tools to build a administrator might be able to use the proprietary tools to build a
shared namespace out of the exported filesystems. Relying on vendor- shared namespace out of the exported filesystems. Relying on vendor-
proprietary tools does not work in larger enterprises or when proprietary tools does not work in larger enterprises or when
collaborating across enterprises because it is likely that the system collaborating across enterprises because it is likely that the system
will contain fileservers running different software, each with their will contain fileservers running different software, each with their
own protocols, with no common protocol to manage the namespace or own protocols, with no common protocol to manage the namespace or
exchange namespace information. exchange namespace information.
The requirements for federated namespaces are described in [RFC5716]. The requirements for federated namespaces are described in [RFC5716].
The filesystem federation protocol described in [FEDFS-NSDB] allows The filesystem federation protocol described in [FEDFS-NSDB] allows
skipping to change at page 11, line 29 skipping to change at page 11, line 29
3. Error Values 3. Error Values
The results of successful operations will consist of a status of The results of successful operations will consist of a status of
FEDFS_OK. The results of unsuccessful operations will begin with a FEDFS_OK. The results of unsuccessful operations will begin with a
status, other than FEDFS_OK, that indicates the reason why the status, other than FEDFS_OK, that indicates the reason why the
operation failed. operation failed.
Many of the error status names and meanings (and the prose for their Many of the error status names and meanings (and the prose for their
descriptions) are taken from the specification for NFSv4 [3530bis]. descriptions) are taken from the specification for NFSv4 [3530bis].
Note, however, that the literal values for the status codes are Note, however, that the numeric values for the status codes are
different. For example, the name and meaning of FEDFS_ERR_ACCESS was
inspired by NFSv4's NFS4ERR_ACCESS, but their numeric values are
different. different.
Note that the status of an unsuccessful operation will generally only The status of an unsuccessful operation will generally only indicate
indicate the first error encountered during the attempt to execute the first error encountered during the attempt to execute the
the operation. operation.
FEDFS_OK: No errors were encountered. The operation was a success. FEDFS_OK: No errors were encountered. The operation was a success.
FEDFS_ERR_ACCESS: Permission denied. The caller does not have the FEDFS_ERR_ACCESS: Permission denied. The caller does not have the
correct permission to perform the requested operation. correct permission to perform the requested operation.
FEDFS_ERR_BADCHAR: A UTF-8 string contains a character which is not FEDFS_ERR_BADCHAR: A UTF-8 string contains a character which is not
supported by the server in the context in which it being used. supported by the server in the context in which it being used.
FEDFS_ERR_BADNAME: A name string in a request consisted of valid FEDFS_ERR_BADNAME: A name string in a request consisted of valid
skipping to change at page 15, line 21 skipping to change at page 15, line 21
FedFsPathName: A variable length array of FedFsPathComponent values FedFsPathName: A variable length array of FedFsPathComponent values
representing a filesystem path. The path's first component is representing a filesystem path. The path's first component is
stored at the first position of the array, the second component is stored at the first position of the array, the second component is
stored at the second position of the array, and so on. stored at the second position of the array, and so on.
The path "/" MUST be encoded as an array with zero components. The path "/" MUST be encoded as an array with zero components.
A FedFsPathName MUST NOT contain any zero-length components. A FedFsPathName MUST NOT contain any zero-length components.
FedFsPath: A pathname container. The format and semantics of the FedFsPath: A pathname container. The format and semantics of the
pathname are defined by the FedFsPathType value. type specific pathname are defined by the FedFsPathType value.
description of a pathname.
FedFsPathType: The type specific description of a pathname.
A FEDFS_PATH_SYS is an implementation dependent administrative A FEDFS_PATH_SYS is an implementation dependent administrative
pathname. For example, it could be a local file system path. pathname. For example, it could be a local file system path.
A FEDFS_PATH_NFS is a pathname in the NFSv4 server's single-server A FEDFS_PATH_NFS is a pathname in the NFSv4 server's single-server
namespace. namespace.
FedFsNsdbParams: A set of parameters for connecting to an NSDB. FedFsNsdbParams: A set of parameters for connecting to an NSDB.
Conceptually the fileserver contains a data structure that maps an Conceptually the fileserver contains a data structure that maps an
NSDB name (DNS name and port value) to these LDAP connection NSDB name (DNS name and port value) to these LDAP connection
skipping to change at page 16, line 42 skipping to change at page 16, line 43
FEDFS_CREATE_REPLICATION FEDFS_CREATE_REPLICATION
FEDFS_DELETE_REPLICATION FEDFS_DELETE_REPLICATION
FEDFS_LOOKUP_REPLICATION FEDFS_LOOKUP_REPLICATION
Fileservers that participate as "leaf" nodes in the namespace (i.e., Fileservers that participate as "leaf" nodes in the namespace (i.e.,
fileservers that host filesets that are the target of junctions, but fileservers that host filesets that are the target of junctions, but
that do not contain any junctions) are not required to implement any that do not contain any junctions) are not required to implement any
of these operations. of these operations.
Note that operations that modify the state of a replicated fileset Operations that modify the state of a replicated fileset MUST result
MUST result in the update of all of the replicas in a consistent in the update of all of the replicas in a consistent manner. Ideally
manner. Ideally all of the replicas SHOULD be updated before any all of the replicas SHOULD be updated before any operation returns.
operation returns. If one or more of the replicas are unavailable, If one or more of the replicas are unavailable, the operation MAY
the operation MAY succeed, but the changes MUST be applied before the succeed, but the changes MUST be applied before the unavailable
unavailable replicas are brought back online. We assume that replicas are brought back online. We assume that replicas are
replicas are updated via some protocol that permits state changes to updated via some protocol that permits state changes to be reflected
be reflected consistently across the set of replicas in such a manner consistently across the set of replicas in such a manner that the
that the replicas will converge to a consistent state within a replicas will converge to a consistent state within a bounded number
bounded number of successful message exchanges between the servers of successful message exchanges between the servers hosting the
hosting the replicas. replicas.
5.1. FEDFS_NULL 5.1. FEDFS_NULL
5.1.1. Synopsis 5.1.1. Synopsis
The standard NULL procedure. The standard NULL procedure.
5.1.2. Description 5.1.2. Description
The null RPC, which is included, by convention, in every ONC RPC The null RPC, which is included, by convention, in every ONC RPC
skipping to change at page 17, line 45 skipping to change at page 17, line 47
the form of an array of one or more UTF-8 path component strings. It the form of an array of one or more UTF-8 path component strings. It
is not required that this path be accessible in any other manner is not required that this path be accessible in any other manner
(e.g., to a client). This path does not appear in the federated (e.g., to a client). This path does not appear in the federated
namespace, except by coincidence; there is no requirement that the namespace, except by coincidence; there is no requirement that the
global namespace parallel the server namespace, nor is it required global namespace parallel the server namespace, nor is it required
that this path be relative to the server pseudo-root. It does not that this path be relative to the server pseudo-root. It does not
need to be a path that is accessible via NFS (although the junction need to be a path that is accessible via NFS (although the junction
will be of limited utility if the directory specified by the path is will be of limited utility if the directory specified by the path is
not also accessible via NFS). not also accessible via NFS).
If the fileset is read-only, then this operation SHOULD indicate this If the fileset is read-only, then this operation MUST indicate this
with a status of FEDFS_ERR_ROFS. with a status of FEDFS_ERR_ROFS.
If the path contains an invalid UTF-8 character, then status If the path contains an invalid UTF-8 character, then status
FEDFS_ERR_BADCHAR must be returned. FEDFS_ERR_BADCHAR MUST be returned.
The path is REQUIRED to exist and be completely local to the server. The path is REQUIRED to exist and be completely local to the server.
It MUST NOT contain a junction. If the last component of the path is It MUST NOT contain a junction. If the last component of the path is
a junction (i.e., this operation is attempting to create a junction a junction (i.e., this operation is attempting to create a junction
where one already exists), then this operation MUST return the error where one already exists), then this operation MUST return the error
FEDFS_ERR_EXIST (even if the requested junction is identical to the FEDFS_ERR_EXIST (even if the requested junction is identical to the
current junction). If any other component of the path is a junction, current junction). If any other component of the path is a junction,
then this operation MUST fail with status FEDFS_ERR_NOTLOCAL. The then this operation MUST fail with status FEDFS_ERR_NOTLOCAL. The
path may contain a symbolic link (if supported by the local server), path might contain a symbolic link (if supported by the local
but the traversal of the path must remain within the server-local server), but the traversal of the path MUST remain within the server-
namespace. local namespace.
If any component of the path does not exist, then the operation fails If any component of the path does not exist, then the operation fails
with status FEDFS_ERR_INVAL. with status FEDFS_ERR_INVAL.
The server MAY enforce the local permissions on the path, including The server MAY enforce the local permissions on the path, including
the final component. If the path cannot be traversed because of the final component. If the path cannot be traversed because of
insufficient permissions, or the final component is an unexecutable insufficient permissions, or the final component is an unexecutable
or unwritable directory, then the operation MAY fail with status or unwritable directory, then the operation MAY fail with status
FEDFS_ERR_ACCESS. FEDFS_ERR_ACCESS.
The operation SHOULD fail with status FEDFS_ERR_NSDB_PARAMS if the The operation SHOULD fail with status FEDFS_ERR_NSDB_PARAMS if the
fileserver does not have any connection parameters on record for the fileserver does not have any connection parameters on record for the
specified NSDB. specified NSDB.
The association between the path and the FSN MUST be durable before The association between the path and the FSN MUST be durable before
the operation may return successfully. If the operation return codes the operation returns successfully. If the operation return codes
indicates success, then the caller may assume that the junction was indicates success, then the junction was successfully created and is
successfully created and is immediately accessible. immediately accessible.
If successful, subsequent references via NFSv4 [3530bis] or NFSv4.1 If successful, subsequent references via NFSv4 [3530bis] or NFSv4.1
[RFC5661] clients to the directory that has been replaced by the [RFC5661] clients to the directory that has been replaced by the
junction will result in a referral to a current location of the junction will result in a referral to a current location of the
target fileset [FEDFS-NSDB]. target fileset [FEDFS-NSDB].
Note that the effective permissions of the directory that is The effective permissions of the directory that is converted, by this
converted, by this operation, into a junction are the permissions of operation, into a junction are the permissions of the root directory
the root directory of the target fileset. The original permissions of the target fileset. The original permissions of the directory
of the directory (and any other attributes it might have) are (and any other attributes it might have) are subsumed by the
subsumed by the junction. junction.
Note that this operation does not create a fileset at the location This operation does not create a fileset at the location targeted by
targeted by the junction. If the target fileset does not exist, the the junction. If the target fileset does not exist, the junction
junction will still be created. An NFS client will discover the will still be created. An NFS client will discover the missing
missing fileset when it traverses the junction. fileset when it traverses the junction.
5.2.3. Errors 5.2.3. Errors
FEDFS_ERR_ACCESS FEDFS_ERR_ACCESS
FEDFS_ERR_BADCHAR FEDFS_ERR_BADCHAR
FEDFS_ERR_BADNAME FEDFS_ERR_BADNAME
FEDFS_ERR_NAMETOOLONG FEDFS_ERR_NAMETOOLONG
FEDFS_ERR_LOOP FEDFS_ERR_LOOP
FEDFS_ERR_BADXDR FEDFS_ERR_BADXDR
FEDFS_ERR_EXIST FEDFS_ERR_EXIST
FEDFS_ERR_INVAL FEDFS_ERR_INVAL
FEDFS_ERR_IO FEDFS_ERR_IO
FEDFS_ERR_NOSPC FEDFS_ERR_NOSPC
skipping to change at page 19, line 48 skipping to change at page 19, line 51
not appear in the federated namespace, except by coincidence; there not appear in the federated namespace, except by coincidence; there
is no requirement that the global namespace reflect the server is no requirement that the global namespace reflect the server
namespace, nor is it required that this path be relative to the namespace, nor is it required that this path be relative to the
server pseudo-root. It does not need to be a path that is accessible server pseudo-root. It does not need to be a path that is accessible
via NFS. via NFS.
If the fileset is read-only, then this operation SHOULD indicate this If the fileset is read-only, then this operation SHOULD indicate this
with a status of FEDFS_ERR_ROFS. with a status of FEDFS_ERR_ROFS.
If the path contains an invalid UTF-8 character, then status If the path contains an invalid UTF-8 character, then status
FEDFS_ERR_BADCHAR must be returned. FEDFS_ERR_BADCHAR MUST be returned.
The path used to delete a junction might not be the same path that The path used to delete a junction might not be the same path that
was used to create the junction. If the namespace on the server has was used to create the junction. If the namespace on the server has
changed, then the junction may now appear at a different path than changed, then the junction might now appear at a different path than
where it was created. If there is more than one valid path to the where it was created. If there is more than one valid path to the
junction, any of them may be used. junction, any of them can be used.
The path is REQUIRED to exist and be completely local to the server. The path is REQUIRED to exist and be completely local to the server.
It MUST NOT contain a junction, except as the final component, which It MUST NOT contain a junction, except as the final component, which
MUST be a junction. If any other component of the path is a MUST be a junction. If any other component of the path is a
junction, then this operation MUST fail with status junction, then this operation MUST fail with status
FEDFS_ERR_NOTLOCAL. If the last component of the path is not a FEDFS_ERR_NOTLOCAL. If the last component of the path is not a
junction then this operation MUST return status FEDFS_ERR_NOTJUNCT. junction then this operation MUST return status FEDFS_ERR_NOTJUNCT.
The path may contain a symbolic link (if supported by the local The path might contain a symbolic link (if supported by the local
server), but the traversal of the path must remain within the server- server), but the traversal of the path MUST remain within the server-
local namespace. local namespace.
The server MAY enforce the local permissions on the path, including The server MAY enforce the local permissions on the path, including
the final component. If the path cannot be traversed because of the final component. If the path cannot be traversed because of
insufficient permissions, or the parent directory of the junction is insufficient permissions, or the parent directory of the junction is
an unexecutable or unwritable directory, then the operation MAY fail an unexecutable or unwritable directory, then the operation MAY fail
with status FEDFS_ERR_ACCESS. with status FEDFS_ERR_ACCESS.
The removal of the association between the path and the FSN MUST be The removal of the association between the path and the FSN MUST be
durable before the operation may return successfully. If the durable before the operation returns successfully. If the operation
operation return codes indicates success, then the caller may assume return codes indicates success, then the the junction was
that the junction was successfully destroyed. successfully destroyed.
The effective permissions and other attributes of the directory that The effective permissions and other attributes of the directory that
is restored by this operation SHOULD be identical to their value is restored by this operation SHOULD be identical to their value
prior to the creation of the junction. prior to the creation of the junction.
After removal of the junction, the fileserver MAY check if any of its After removal of the junction, the fileserver MAY check if any of its
existing junctions reference the NSDB specified in the removed existing junctions reference the NSDB specified in the removed
junction's FSN. If the NSDB is not referenced, the fileserver MAY junction's FSN. If the NSDB is not referenced, the fileserver MAY
delete the connection parameters of the unreferenced NSDB. delete the connection parameters of the unreferenced NSDB.
skipping to change at page 21, line 28 skipping to change at page 21, line 30
5.4.2. Description 5.4.2. Description
This operation queries a server to determine whether a given path This operation queries a server to determine whether a given path
ends in a junction, and if so, the FSN to which the junction refers ends in a junction, and if so, the FSN to which the junction refers
and the filerserver's ability to resolve the junction. and the filerserver's ability to resolve the junction.
Ordinary NFSv4 operations do not provide any general mechanism to Ordinary NFSv4 operations do not provide any general mechanism to
determine whether an object is a junction -- there is no encoding determine whether an object is a junction -- there is no encoding
specified by the NFSv4 protocol that can represent this information. specified by the NFSv4 protocol that can represent this information.
As with FEDFS_CREATE_JUNCTION, the pathname must be in the form of an As with FEDFS_CREATE_JUNCTION, the pathname MUST be in the form of an
array of one or more UTF-8 path component strings. It is not array of one or more UTF-8 path component strings. It is not
required that this path be accessible in any other manner (e.g., to a required that this path be accessible in any other manner (e.g., to a
client). This path does not appear in the federated namespace, client). This path does not appear in the federated namespace,
except by coincidence; there is no requirement that the global except by coincidence; there is no requirement that the global
namespace reflect the server namespace, nor is it required that this namespace reflect the server namespace, nor is it required that this
path be relative to the server pseudo-root. It does not need to be a path be relative to the server pseudo-root. It does not need to be a
path that is accessible via NFS. path that is accessible via NFS.
If the path contains an invalid UTF-8 character, then status If the path contains an invalid UTF-8 character, then status
FEDFS_ERR_BADCHAR must be returned. FEDFS_ERR_BADCHAR MUST be returned.
The path used to lookup a junction might not be the same path that The path used to lookup a junction might not be the same path that
was used to create the junction. If the namespace on the server has was used to create the junction. If the namespace on the server has
changed, then a junction may now appear at a different path than changed, then a junction might now appear at a different path than
where it was created. If there is more than one valid path to the where it was created. If there is more than one valid path to the
junction, any of them may be used. junction, any of them might be used.
The path is REQUIRED to exist and be completely local to the server. The path is REQUIRED to exist and be completely local to the server.
It MUST NOT contain a junction, except as the final component. If It MUST NOT contain a junction, except as the final component. If
any other component of the path is a junction, then this operation any other component of the path is a junction, then this operation
MUST fail with status FEDFS_ERR_NOTLOCAL. If the last component of MUST fail with status FEDFS_ERR_NOTLOCAL. If the last component of
the path is not a junction then this operation MUST return the status the path is not a junction then this operation MUST return the status
FEDFS_ERR_NOTJUNCT. The path may contain a symbolic link (if FEDFS_ERR_NOTJUNCT. The path might contain a symbolic link (if
supported by the local server), but the traversal of the path must supported by the local server), but the traversal of the path MUST
remain within the server-local namespace. remain within the server-local namespace.
The server MAY enforce the local permissions on the path, including The server MAY enforce the local permissions on the path, including
the final component. If the path cannot be traversed because of the final component. If the path cannot be traversed because of
insufficient permissions, or the parent directory of the junction is insufficient permissions, or the parent directory of the junction is
an unexecutable or unwritable directory, then the operation MAY fail an unexecutable or unwritable directory, then the operation MAY fail
with status FEDFS_ERR_ACCESS. with status FEDFS_ERR_ACCESS.
If the junction exists, the resolve parameter allows for testing the If the junction exists, the resolve parameter allows for testing the
fileserver's ability to resolve the junction. If the junction does fileserver's ability to resolve the junction. If the junction does
skipping to change at page 24, line 43 skipping to change at page 24, line 45
5.5. FEDFS_CREATE_REPLICATION 5.5. FEDFS_CREATE_REPLICATION
5.5.1. Synopsis 5.5.1. Synopsis
Set an FSN representing the replication information for the fileset Set an FSN representing the replication information for the fileset
containing the pathname. containing the pathname.
5.5.2. Description 5.5.2. Description
This operation indicates the replication information to be returned This operation indicates the replication information to be returned
for a particular fileset. An NFSv4.x client may request fs_locations for a particular fileset. An NFSv4.x client might request
or fs_locations_info at any time to detect other copies of this fs_locations or fs_locations_info at any time to detect other copies
fileset, and this operation supports this by supplying the FSN the of this fileset, and this operation supports this by supplying the
fileserver should use to respond. This FSN should be associated with FSN the fileserver should use to respond. This FSN should be
the entire fileset in which the path resides, and should be used to associated with the entire fileset in which the path resides, and
satisfy fs_locations or fs_locations_info attribute requests whenever should be used to satisfy fs_locations or fs_locations_info attribute
no junction is being accessed; if a junction is being accessed, the requests whenever no junction is being accessed; if a junction is
FSN specified by FEDFS_CREATE_JUNCTION will take precedence. Setting being accessed, the FSN specified by FEDFS_CREATE_JUNCTION will take
the replication FSN on a fileset that already has a replication FSN precedence. Setting the replication FSN on a fileset that already
set is allowed. has a replication FSN set is allowed.
This operation differs from FEDFS_CREATE_JUNCTION in that it controls This operation differs from FEDFS_CREATE_JUNCTION in that it controls
a fileset-wide attribute not associated with a junction. a fileset-wide attribute not associated with a junction.
The server SHOULD permit this operation even on read-only filesets, The server SHOULD permit this operation even on read-only filesets,
but MAY return FEDFS_ERR_ROFS if this is not possible. but MAY return FEDFS_ERR_ROFS if this is not possible.
If the path contains an invalid UTF-8 character, then status If the path contains an invalid UTF-8 character, then status
FEDFS_ERR_BADCHAR must be returned. FEDFS_ERR_BADCHAR MUST be returned.
The path is REQUIRED to exist and be completely local to the server. The path is REQUIRED to exist and be completely local to the server.
It MUST NOT contain a junction. If any component of the path is a It MUST NOT contain a junction. If any component of the path is a
junction, then this operation MUST fail with status junction, then this operation MUST fail with status
FEDFS_ERR_NOTLOCAL. The path may contain a symbolic link (if FEDFS_ERR_NOTLOCAL. The path might contain a symbolic link (if
supported by the local server), but the traversal of the path must supported by the local server), but the traversal of the path MUST
remain within the server-local namespace. remain within the server-local namespace.
The server MAY enforce the local permissions on the path, including The server MAY enforce the local permissions on the path, including
the final component. If the path cannot be traversed because of the final component. If the path cannot be traversed because of
insufficient permissions, or the final component is an unexecutable insufficient permissions, or the final component is an unexecutable
or unwritable directory, then the operation MAY fail with status or unwritable directory, then the operation MAY fail with status
FEDFS_ERR_ACCESS. FEDFS_ERR_ACCESS.
The operation SHOULD fail with status FEDFS_ERR_NSDB_PARAMS if the The operation SHOULD fail with status FEDFS_ERR_NSDB_PARAMS if the
fileserver does not have any connection parameters on record for the fileserver does not have any connection parameters on record for the
specified NSDB. specified NSDB.
The same FSN value SHOULD be associated with all replicas of a The same FSN value SHOULD be associated with all replicas of a
filesystem. Depending on the underlying representation, the FSN filesystem. Depending on the underlying representation, the FSN
associated with a filesystem may or may not be replicated associated with a filesystem might or might not be replicated
automatically with the filesystem replication mechanism. Therefore automatically with the filesystem replication mechanism. Therefore
if FEDFS_CREATE_REPLICATION is used on one replica of a filesystem, if FEDFS_CREATE_REPLICATION is used on one replica of a filesystem,
it SHOULD be used on all replicas. it SHOULD be used on all replicas.
5.5.3. Errors 5.5.3. Errors
FEDFS_ERR_ACCESS FEDFS_ERR_ACCESS
FEDFS_ERR_BADCHAR FEDFS_ERR_BADCHAR
FEDFS_ERR_BADNAME FEDFS_ERR_BADNAME
FEDFS_ERR_NAMETOOLONG FEDFS_ERR_NAMETOOLONG
skipping to change at page 26, line 34 skipping to change at page 26, line 36
fs_locations or fs_locations_info in the absence of a junction will fs_locations or fs_locations_info in the absence of a junction will
not be satisfied. not be satisfied.
This operation differs from FEDFS_DELETE_JUNCTION in that it controls This operation differs from FEDFS_DELETE_JUNCTION in that it controls
a fileset-wide attribute not associated with a junction. a fileset-wide attribute not associated with a junction.
The server SHOULD permit this operation even on read-only filesets, The server SHOULD permit this operation even on read-only filesets,
but MAY return FEDFS_ERR_ROFS if this is not possible. but MAY return FEDFS_ERR_ROFS if this is not possible.
If the path contains an invalid UTF-8 character, then status If the path contains an invalid UTF-8 character, then status
FEDFS_ERR_BADCHAR must be returned. FEDFS_ERR_BADCHAR MUST be returned.
The path is REQUIRED to exist and be completely local to the server. The path is REQUIRED to exist and be completely local to the server.
It MUST NOT contain a junction. If any component of the path is a It MUST NOT contain a junction. If any component of the path is a
junction, then this operation MUST fail with status junction, then this operation MUST fail with status
FEDFS_ERR_NOTLOCAL. FEDFS_ERR_NOTLOCAL.
The server MAY enforce the local permissions on the path, including The server MAY enforce the local permissions on the path, including
the final component. If the path cannot be traversed because of the final component. If the path cannot be traversed because of
insufficient permissions, or the parent directory of the junction insufficient permissions, or the parent directory of the junction
unexecutable or unwritable directory, then the operation MAY fail unexecutable or unwritable directory, then the operation MAY fail
skipping to change at page 27, line 37 skipping to change at page 27, line 41
5.7.2. Description 5.7.2. Description
This operation queries a server to determine whether a fileset This operation queries a server to determine whether a fileset
containing the given path has replication information associated with containing the given path has replication information associated with
it, and if so, the FSN for that replication information. it, and if so, the FSN for that replication information.
This operation differs from FEDFS_LOOKUP_JUNCTION in that it inquires This operation differs from FEDFS_LOOKUP_JUNCTION in that it inquires
about a fileset-wide attribute not associated with a junction. about a fileset-wide attribute not associated with a junction.
If the path contains an invalid UTF-8 character, then status If the path contains an invalid UTF-8 character, then status
FEDFS_ERR_BADCHAR must be returned. FEDFS_ERR_BADCHAR MUST be returned.
The path is REQUIRED to exist and be completely local to the server. The path is REQUIRED to exist and be completely local to the server.
It MUST NOT contain a junction. If any component of the path is a It MUST NOT contain a junction. If any component of the path is a
junction, then this operation MUST fail with status junction, then this operation MUST fail with status
FEDFS_ERR_NOTLOCAL. FEDFS_ERR_NOTLOCAL.
The server MAY enforce the local permissions on the path, including The server MAY enforce the local permissions on the path, including
the final component. If the path cannot be traversed because of the final component. If the path cannot be traversed because of
insufficient permissions, or the parent directory of the junction is insufficient permissions, or the parent directory of the junction is
an unexecutable or unwritable directory, then the operation MAY fail an unexecutable or unwritable directory, then the operation MAY fail
 End of changes. 39 change blocks. 
78 lines changed or deleted 81 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/