Internet DRAFT - draft-robinson-curstateid
draft-robinson-curstateid
NFSv4 D. Robinson
Internet-Draft Sun
Expires: January 14, 2006 July 13, 2005
NFSv4 current stateid
draft-robinson-curstateid-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on January 14, 2006.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
The semantics of the NFSv4 server are changed to include tracking the
value of current stateid in addition to the existing current
filehandle. This will allow the stateid generated by one operation
to be used by a subsequent operation without incurring an addition
round trip operation.
Robinson Expires January 14, 2006 [Page 1]
Internet-Draft NFSv4 current stateid July 2005
1. Introduction
The NFSv4 COMPOUND operation introduced the concept of a current
filehandle to allow an operation that retrieve or creates a
filehandle to pass its value to a subsequent operation. In addition
it also created operations to allow the saving and restoring of the
current file handle. This has the benefit of both simplifying the
individual operations as well as removing unnecessary round trips
just to communicate the previous result to the next operation.
One deficiency in the NFSv4 COMPOUND model is that only the
filehandle may be passed from one operation to another. While a
complex scheme to pass any result as arguments to any other
operation's arguments is possible to be constructed, the most notable
state that cannot be passed is the stateid. During the initial
creation of the NFSv4 protocol, it was imagined that COMPOUND could
be used for optimizations such as opening, reading, and closing a
file all in a single RPC. Without the ability to pass the stateid
between operations this cannot be done without using a special
stateid that may potentially circumvent file record locking.
This proposal adds to the server's COMPOUND state a "current stateid"
and a "saved stateid" which are passed between operations. There are
no changes to the syntax of the protocol, only changes to the
semantics of a few operations in a manner that is mostly compatible
with the existing implementations.
Robinson Expires January 14, 2006 [Page 2]
Internet-Draft NFSv4 current stateid July 2005
2. Current Stateid
A "current stateid" is the stateid that is associated with the
current filehandle. This proposal introduces no new operations that
independently manipulate the current stateid, it may only be
retrieved or modified using existing operations.
Any NFSv4 operation that modifies the current filehandle MUST also
modify the current stateid. Those operations that also return a
stateid MUST set the current stateid to that value. Those operations
that do not return a stateid MUST set the current stateid to the
special all-zeros stateid. As an example, PUTFH will change the
current server state from {ocfh, osid} to {cfh, 0} while LOCK will
change the current state from {cfh, osid} to {cfh, nsid}. The SAVEFH
and RESTOREFH operations will save and restore both the filehandle
and the stateid as a set.
Any NFSv4 operation that takes as an argument a stateid that is not
the special all-zeros stateid MUST set the current stateid to that
value before evaluating the operation. If the argument is the
special all-zeros stateid, the operation is evaluated using the
current stateid.
Examples of current stateid usage.
PUTFH fh1 - -> {fh1, 0}
READ sid1,0,1024 {fh1, sid1} -> {fh1, sid1}
PUTFH fh1 - -> {fh1, 0}
OPEN R,sid1,"foo" {fh1, sid1} -> {fh2, sid2}
READ 0,0,1024 {fh2, sid2} -> {fh2, sid2}
CLOSE 0 {fh2, sid2} -> {fh2, sid3}
PUTFH fh1 - -> {fh1, 0}
LOCK W,0,1024,sid1 {fh1, sid1} -> {fh1, sid2}
READ 0,0,1024 {fh1, sid2} -> {fh1, sid2}
LOCKU W,0,1024,0 {fh1, sid2} -> {fh1, sid3}
Figure 1
In Figure 1 the first example is the common case of a simple READ
operation with a supplied stateid showing that the PUTFH initializes
the current stateid to zero. The subsequent READ with stateid sid1
replaces the current stateid before evaluating the operation.
The second example performs an OPEN with the client provided stateid
sid1 and as a result generates stateid sid2. The next operation
specifies the READ with the special all-zero stateid but the current
Robinson Expires January 14, 2006 [Page 3]
Internet-Draft NFSv4 current stateid July 2005
stateid set by the previous operation is actually used when the
operation is evaluated, allowing correct interaction with any
existing, potentially conflicting, locks.
The third example is similar to the second in how it passes the
stateid sid2 generated by the LOCK operation to the next READ
operation. This allows the client to explicitly surround a single
I/O operation with a lock and its appropriate stateid to guarantee
correctness with other client locks.
Robinson Expires January 14, 2006 [Page 4]
Internet-Draft NFSv4 current stateid July 2005
3. Discussion
The current stateid is only used if the client has specified as an
argument to an operation a special stateid that is all-zeros. Most
current NFSv4 clients do not use the special stateids and as a
result, will see no semantic difference when the current stateid is
introduced. For those clients that do use the special stateid, most
will be doing so in situations that the current stateid is designed
to address, eliminating an extra round trip just to supply the
stateid. Using the current stateid will almost always be
semantically correct.
There may be a rare case where the client's use of a special stateid
is used with the intent of bypassing the actual state that client has
established, but this is not expected to be significant.
Robinson Expires January 14, 2006 [Page 5]
Internet-Draft NFSv4 current stateid July 2005
4. IANA Considerations
This document has no actions for IANA.
5. Normative References
[1] Shepler, et al., S., "NFS Version 4 Protocol", RFC 3530,
April 2003.
Author's Address
David Robinson
Sun Microsystems, Inc.
5300 Riata Park Court
UAUS08-102
Austin, TX 78727
US
Phone: +1 512 401 1757
Email: David.Robinson@sun.com
Robinson Expires January 14, 2006 [Page 6]
Internet-Draft NFSv4 current stateid July 2005
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Robinson Expires January 14, 2006 [Page 7]