nfsd4: update nfsv4.1 implementation notes
Update documentation to reflect recent progress. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
@@ -39,27 +39,17 @@ interoperability problems with future clients. Known issues:
|
|||||||
from a linux client are possible, but we aren't really
|
from a linux client are possible, but we aren't really
|
||||||
conformant with the spec (for example, we don't use kerberos
|
conformant with the spec (for example, we don't use kerberos
|
||||||
on the backchannel correctly).
|
on the backchannel correctly).
|
||||||
- no trunking support: no clients currently take advantage of
|
|
||||||
trunking, but this is a mandatory feature, and its use is
|
|
||||||
recommended to clients in a number of places. (E.g. to ensure
|
|
||||||
timely renewal in case an existing connection's retry timeouts
|
|
||||||
have gotten too long; see section 8.3 of the RFC.)
|
|
||||||
Therefore, lack of this feature may cause future clients to
|
|
||||||
fail.
|
|
||||||
- Incomplete backchannel support: incomplete backchannel gss
|
- Incomplete backchannel support: incomplete backchannel gss
|
||||||
support and no support for BACKCHANNEL_CTL mean that
|
support and no support for BACKCHANNEL_CTL mean that
|
||||||
callbacks (hence delegations and layouts) may not be
|
callbacks (hence delegations and layouts) may not be
|
||||||
available and clients confused by the incomplete
|
available and clients confused by the incomplete
|
||||||
implementation may fail.
|
implementation may fail.
|
||||||
- Server reboot recovery is unsupported; if the server reboots,
|
|
||||||
clients may fail.
|
|
||||||
- We do not support SSV, which provides security for shared
|
- We do not support SSV, which provides security for shared
|
||||||
client-server state (thus preventing unauthorized tampering
|
client-server state (thus preventing unauthorized tampering
|
||||||
with locks and opens, for example). It is mandatory for
|
with locks and opens, for example). It is mandatory for
|
||||||
servers to support this, though no clients use it yet.
|
servers to support this, though no clients use it yet.
|
||||||
- Mandatory operations which we do not support, such as
|
- Mandatory operations which we do not support, such as
|
||||||
DESTROY_CLIENTID, FREE_STATEID, SECINFO_NO_NAME, and
|
DESTROY_CLIENTID, are not currently used by clients, but will be
|
||||||
TEST_STATEID, are not currently used by clients, but will be
|
|
||||||
(and the spec recommends their uses in common cases), and
|
(and the spec recommends their uses in common cases), and
|
||||||
clients should not be expected to know how to recover from the
|
clients should not be expected to know how to recover from the
|
||||||
case where they are not supported. This will eventually cause
|
case where they are not supported. This will eventually cause
|
||||||
@@ -69,8 +59,9 @@ In addition, some limitations are inherited from the current NFSv4
|
|||||||
implementation:
|
implementation:
|
||||||
|
|
||||||
- Incomplete delegation enforcement: if a file is renamed or
|
- Incomplete delegation enforcement: if a file is renamed or
|
||||||
unlinked, a client holding a delegation may continue to
|
unlinked by a local process, a client holding a delegation may
|
||||||
indefinitely allow opens of the file under the old name.
|
continue to indefinitely allow opens of the file under the old
|
||||||
|
name.
|
||||||
|
|
||||||
The table below, taken from the NFSv4.1 document, lists
|
The table below, taken from the NFSv4.1 document, lists
|
||||||
the operations that are mandatory to implement (REQ), optional
|
the operations that are mandatory to implement (REQ), optional
|
||||||
@@ -99,7 +90,7 @@ Operations
|
|||||||
+----------------------+------------+--------------+----------------+
|
+----------------------+------------+--------------+----------------+
|
||||||
| ACCESS | REQ | | Section 18.1 |
|
| ACCESS | REQ | | Section 18.1 |
|
||||||
NS | BACKCHANNEL_CTL | REQ | | Section 18.33 |
|
NS | BACKCHANNEL_CTL | REQ | | Section 18.33 |
|
||||||
NS | BIND_CONN_TO_SESSION | REQ | | Section 18.34 |
|
I | BIND_CONN_TO_SESSION | REQ | | Section 18.34 |
|
||||||
| CLOSE | REQ | | Section 18.2 |
|
| CLOSE | REQ | | Section 18.2 |
|
||||||
| COMMIT | REQ | | Section 18.3 |
|
| COMMIT | REQ | | Section 18.3 |
|
||||||
| CREATE | REQ | | Section 18.4 |
|
| CREATE | REQ | | Section 18.4 |
|
||||||
@@ -111,7 +102,7 @@ NS*| DELEGPURGE | OPT | FDELG (REQ) | Section 18.5 |
|
|||||||
NS | DESTROY_CLIENTID | REQ | | Section 18.50 |
|
NS | DESTROY_CLIENTID | REQ | | Section 18.50 |
|
||||||
I | DESTROY_SESSION | REQ | | Section 18.37 |
|
I | DESTROY_SESSION | REQ | | Section 18.37 |
|
||||||
I | EXCHANGE_ID | REQ | | Section 18.35 |
|
I | EXCHANGE_ID | REQ | | Section 18.35 |
|
||||||
NS | FREE_STATEID | REQ | | Section 18.38 |
|
I | FREE_STATEID | REQ | | Section 18.38 |
|
||||||
| GETATTR | REQ | | Section 18.7 |
|
| GETATTR | REQ | | Section 18.7 |
|
||||||
P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 |
|
P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 |
|
||||||
P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 |
|
P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 |
|
||||||
@@ -145,14 +136,14 @@ NS*| OPENATTR | OPT | | Section 18.17 |
|
|||||||
| RESTOREFH | REQ | | Section 18.27 |
|
| RESTOREFH | REQ | | Section 18.27 |
|
||||||
| SAVEFH | REQ | | Section 18.28 |
|
| SAVEFH | REQ | | Section 18.28 |
|
||||||
| SECINFO | REQ | | Section 18.29 |
|
| SECINFO | REQ | | Section 18.29 |
|
||||||
NS | SECINFO_NO_NAME | REC | pNFS files | Section 18.45, |
|
I | SECINFO_NO_NAME | REC | pNFS files | Section 18.45, |
|
||||||
| | | layout (REQ) | Section 13.12 |
|
| | | layout (REQ) | Section 13.12 |
|
||||||
I | SEQUENCE | REQ | | Section 18.46 |
|
I | SEQUENCE | REQ | | Section 18.46 |
|
||||||
| SETATTR | REQ | | Section 18.30 |
|
| SETATTR | REQ | | Section 18.30 |
|
||||||
| SETCLIENTID | MNI | | N/A |
|
| SETCLIENTID | MNI | | N/A |
|
||||||
| SETCLIENTID_CONFIRM | MNI | | N/A |
|
| SETCLIENTID_CONFIRM | MNI | | N/A |
|
||||||
NS | SET_SSV | REQ | | Section 18.47 |
|
NS | SET_SSV | REQ | | Section 18.47 |
|
||||||
NS | TEST_STATEID | REQ | | Section 18.48 |
|
I | TEST_STATEID | REQ | | Section 18.48 |
|
||||||
| VERIFY | REQ | | Section 18.31 |
|
| VERIFY | REQ | | Section 18.31 |
|
||||||
NS*| WANT_DELEGATION | OPT | FDELG (OPT) | Section 18.49 |
|
NS*| WANT_DELEGATION | OPT | FDELG (OPT) | Section 18.49 |
|
||||||
| WRITE | REQ | | Section 18.32 |
|
| WRITE | REQ | | Section 18.32 |
|
||||||
@@ -206,12 +197,6 @@ CREATE_SESSION:
|
|||||||
SEQUENCE:
|
SEQUENCE:
|
||||||
* no support for dynamic slot table renegotiation (optional)
|
* no support for dynamic slot table renegotiation (optional)
|
||||||
|
|
||||||
nfsv4.1 COMPOUND rules:
|
|
||||||
The following cases aren't supported yet:
|
|
||||||
* Enforcing of NFS4ERR_NOT_ONLY_OP for: BIND_CONN_TO_SESSION, CREATE_SESSION,
|
|
||||||
DESTROY_CLIENTID, DESTROY_SESSION, EXCHANGE_ID.
|
|
||||||
* DESTROY_SESSION MUST be the final operation in the COMPOUND request.
|
|
||||||
|
|
||||||
Nonstandard compound limitations:
|
Nonstandard compound limitations:
|
||||||
* No support for a sessions fore channel RPC compound that requires both a
|
* No support for a sessions fore channel RPC compound that requires both a
|
||||||
ca_maxrequestsize request and a ca_maxresponsesize reply, so we may
|
ca_maxrequestsize request and a ca_maxresponsesize reply, so we may
|
||||||
@@ -219,3 +204,5 @@ Nonstandard compound limitations:
|
|||||||
negotiation.
|
negotiation.
|
||||||
* No more than one IO operation (read, write, readdir) allowed per
|
* No more than one IO operation (read, write, readdir) allowed per
|
||||||
compound.
|
compound.
|
||||||
|
|
||||||
|
See also http://wiki.linux-nfs.org/wiki/index.php/Server_4.0_and_4.1_issues.
|
||||||
|
Reference in New Issue
Block a user