draft-ietf-nfsv4-minorversion2-35.txt   draft-ietf-nfsv4-minorversion2-36.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Primary Data Internet-Draft Primary Data
Intended status: Standards Track March 30, 2015 Intended status: Standards Track April 22, 2015
Expires: October 1, 2015 Expires: October 24, 2015
NFS Version 4 Minor Version 2 NFS Version 4 Minor Version 2
draft-ietf-nfsv4-minorversion2-35.txt draft-ietf-nfsv4-minorversion2-36.txt
Abstract Abstract
This Internet-Draft describes NFS version 4 minor version two, This Internet-Draft describes NFS version 4 minor version two,
describing the protocol extensions made from NFS version 4 minor describing the protocol extensions made from NFS version 4 minor
version 1. Major extensions introduced in NFS version 4 minor version 1. Major extensions introduced in NFS version 4 minor
version two include: Server Side Copy, Application I/O Advise, Space version two include: Server Side Copy, Application I/O Advise, Space
Reservations, Sparse Files, Application Data Blocks, and Labeled NFS. Reservations, Sparse Files, Application Data Blocks, and Labeled NFS.
Requirements Language Requirements Language
skipping to change at page 1, line 40 skipping to change at page 1, line 40
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 October 1, 2015. This Internet-Draft will expire on October 24, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 4, line 34 skipping to change at page 4, line 34
15.13. Operation 71: CLONE - Clone a file . . . . . . . . . . . 90 15.13. Operation 71: CLONE - Clone a file . . . . . . . . . . . 90
16. NFSv4.2 Callback Operations . . . . . . . . . . . . . . . . . 91 16. NFSv4.2 Callback Operations . . . . . . . . . . . . . . . . . 91
16.1. Operation 15: CB_OFFLOAD - Report results of an 16.1. Operation 15: CB_OFFLOAD - Report results of an
asynchronous operation . . . . . . . . . . . . . . . . . 91 asynchronous operation . . . . . . . . . . . . . . . . . 91
17. Security Considerations . . . . . . . . . . . . . . . . . . . 93 17. Security Considerations . . . . . . . . . . . . . . . . . . . 93
18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 93 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 93
19. References . . . . . . . . . . . . . . . . . . . . . . . . . 93 19. References . . . . . . . . . . . . . . . . . . . . . . . . . 93
19.1. Normative References . . . . . . . . . . . . . . . . . . 93 19.1. Normative References . . . . . . . . . . . . . . . . . . 93
19.2. Informative References . . . . . . . . . . . . . . . . . 94 19.2. Informative References . . . . . . . . . . . . . . . . . 94
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 95 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 95
Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 97 Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 96
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 97 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 97
1. Introduction 1. Introduction
1.1. The NFS Version 4 Minor Version 2 Protocol 1.1. The NFS Version 4 Minor Version 2 Protocol
The NFS version 4 minor version 2 (NFSv4.2) protocol is the third The NFS version 4 minor version 2 (NFSv4.2) protocol is the third
minor version of the NFS version 4 (NFSv4) protocol. The first minor minor version of the NFS version 4 (NFSv4) protocol. The first minor
version, NFSv4.0, is described in [RFC7530] and the second minor version, NFSv4.0, is described in [RFC7530] and the second minor
version, NFSv4.1, is described in [RFC5661]. version, NFSv4.1, is described in [RFC5661].
skipping to change at page 61, line 37 skipping to change at page 61, line 37
The COPY operation is used for both intra-server and inter-server The COPY operation is used for both intra-server and inter-server
copies. In both cases, the COPY is always sent from the client to copies. In both cases, the COPY is always sent from the client to
the destination server of the file copy. The COPY operation requests the destination server of the file copy. The COPY operation requests
that a range in the file specified by SAVED_FH is copied to a range that a range in the file specified by SAVED_FH is copied to a range
in the file specified by CURRENT_FH. in the file specified by CURRENT_FH.
Both SAVED_FH and CURRENT_FH must be regular files. If either Both SAVED_FH and CURRENT_FH must be regular files. If either
SAVED_FH or CURRENT_FH are not regular files, the operation MUST fail SAVED_FH or CURRENT_FH are not regular files, the operation MUST fail
and return NFS4ERR_WRONG_TYPE. and return NFS4ERR_WRONG_TYPE.
SAVED_FH and CURRENT_FH must be differet files. If SAVED_FH and SAVED_FH and CURRENT_FH must be different files. If SAVED_FH and
CURRENT_FH refer to the same file, the operation will fail with CURRENT_FH refer to the same file, the operation will fail with
NFS4ERR_INVAL. NFS4ERR_INVAL.
In order to set SAVED_FH to the source file handle, the compound In order to set SAVED_FH to the source file handle, the compound
procedure requesting the COPY will include a sub-sequence of procedure requesting the COPY will include a sub-sequence of
operations such as operations such as
PUTFH source-fh PUTFH source-fh
SAVEFH SAVEFH
skipping to change at page 63, line 51 skipping to change at page 63, line 51
determine if it wants to either re-request the copy with a relaxed determine if it wants to either re-request the copy with a relaxed
set of requirements or if it wants to revert to manually copying the set of requirements or if it wants to revert to manually copying the
data. If it decides to manually copy the data and this is a remote data. If it decides to manually copy the data and this is a remote
copy, then the client is responsible for informing the source that copy, then the client is responsible for informing the source that
the earlier COPY_NOTIFY is no longer valid by sending it an the earlier COPY_NOTIFY is no longer valid by sending it an
OFFLOAD_CANCEL. OFFLOAD_CANCEL.
If the operation does not result in an immediate failure, the server If the operation does not result in an immediate failure, the server
will return NFS4_OK. will return NFS4_OK.
If the wr_callback_id is returned, this indicates that the operation If the wr_callback_id is returned, this indicates that an
was initiated and a CB_OFFLOAD callback will deliver the final asynchronous COPY operation was initiated and a CB_OFFLOAD callback
results of the operation. The wr_callback_id stateid is termed a will deliver the final results of the operation. The wr_callback_id
copy stateid in this context. The server is given the option of stateid is termed a copy stateid in this context. The server is
returning the results in a callback because the data may require a given the option of returning the results in a callback because the
relatively long period of time to copy. data may require a relatively long period of time to copy.
If no wr_callback_id is returned, the operation completed If no wr_callback_id is returned, the operation completed
synchronously and no callback will be issued by the server. The synchronously and no callback will be issued by the server. The
completion status of the operation is indicated by cr_status. completion status of the operation is indicated by cr_status.
If the copy completes successfully, either synchronously or If the copy completes successfully, either synchronously or
asynchronously, the data copied from the source file to the asynchronously, the data copied from the source file to the
destination file MUST appear identical to the NFS client. However, destination file MUST appear identical to the NFS client. However,
the NFS server's on disk representation of the data in the source the NFS server's on disk representation of the data in the source
file and destination file MAY differ. For example, the NFS server file and destination file MAY differ. For example, the NFS server
skipping to change at page 76, line 47 skipping to change at page 76, line 47
15.7.1. ARGUMENT 15.7.1. ARGUMENT
<CODE BEGINS> <CODE BEGINS>
struct layoutupdate4 { struct layoutupdate4 {
layouttype4 lou_type; layouttype4 lou_type;
opaque lou_body<>; opaque lou_body<>;
}; };
struct io_info4 { struct io_info4 {
uint32_t ii_count; uint64_t ii_count;
uint64_t ii_bytes; uint64_t ii_bytes;
}; };
struct LAYOUTSTATS4args { struct LAYOUTSTATS4args {
/* CURRENT_FH: file */ /* CURRENT_FH: file */
offset4 lsa_offset; offset4 lsa_offset;
length4 lsa_length; length4 lsa_length;
stateid4 lsa_stateid; stateid4 lsa_stateid;
io_info4 lsa_read; io_info4 lsa_read;
io_info4 lsa_write; io_info4 lsa_write;
deviceid4 lsa_deviceid; deviceid4 lsa_deviceid;
skipping to change at page 77, line 47 skipping to change at page 77, line 47
Layout Type and presented in the lsa_layoutupdate field. Each Layout Layout Type and presented in the lsa_layoutupdate field. Each Layout
Type MUST define the contents of lsa_layoutupdate in their respective Type MUST define the contents of lsa_layoutupdate in their respective
specifications. specifications.
LAYOUTSTATS can be combined with IO_ADVISE (see Section 15.5) to LAYOUTSTATS can be combined with IO_ADVISE (see Section 15.5) to
augment the decision making process of how the metadata server augment the decision making process of how the metadata server
handles a file. I.e., IO_ADVISE lets the server know that a byte handles a file. I.e., IO_ADVISE lets the server know that a byte
range has a certain characteristic, but not necessarily the intensity range has a certain characteristic, but not necessarily the intensity
of that characteristic. of that characteristic.
The client MUST reset the statistics after getting a successfully The statistics are cummulative, i.e., multiple LAYOUTSTATS updates
reply from the metadata server. The first LAYOUTSTATS sent by the can be in flight at the same time. The metadata server can examine
client SHOULD be from the opening of the file. The choice of how the packet's timestamp to order the different calls. The first
often to update the metadata server is made by the client. LAYOUTSTATS sent by the client SHOULD be from the opening of the
file. The choice of how often to update the metadata server is made
by the client.
Note that while the metadata server may return an error associated Note that while the metadata server may return an error associated
with the layout stateid or the open file, it MUST NOT return an error with the layout stateid or the open file, it MUST NOT return an error
in the processing of the statistics. in the processing of the statistics.
15.8. Operation 66: OFFLOAD_CANCEL - Stop an Offloaded Operation 15.8. Operation 66: OFFLOAD_CANCEL - Stop an Offloaded Operation
15.8.1. ARGUMENT 15.8.1. ARGUMENT
<CODE BEGINS> <CODE BEGINS>
skipping to change at page 90, line 49 skipping to change at page 90, line 49
Both SAVED_FH and CURRENT_FH must be regular files. If either Both SAVED_FH and CURRENT_FH must be regular files. If either
SAVED_FH or CURRENT_FH are not regular files, the operation MUST fail SAVED_FH or CURRENT_FH are not regular files, the operation MUST fail
and return NFS4ERR_WRONG_TYPE. and return NFS4ERR_WRONG_TYPE.
SAVED_FH and CURRENT_FH must be different files. If SAVED_FH and SAVED_FH and CURRENT_FH must be different files. If SAVED_FH and
CURRENT_FH refer to the same file, the operation will fail with CURRENT_FH refer to the same file, the operation will fail with
NFS4ERR_INVAL. NFS4ERR_INVAL.
In order to set SAVED_FH to the source file handle, the compound In order to set SAVED_FH to the source file handle, the compound
procedure requesting the COPY will include a sub-sequence of procedure requesting the CLONE will include a sub-sequence of
operations such as operations such as
PUTFH source-fh PUTFH source-fh
SAVEFH SAVEFH
The ca_dst_stateid MUST refer to a stateid that is valid for a WRITE The ca_dst_stateid MUST refer to a stateid that is valid for a WRITE
operation and follows the rules for stateids in Sections 8.2.5 and operation and follows the rules for stateids in Sections 8.2.5 and
18.32.3 of [RFC5661]. The ca_src_stateid MUST refer to a stateid 18.32.3 of [RFC5661]. The ca_src_stateid MUST refer to a stateid
that is valid for a READ operations and follows the rules for that is valid for a READ operations and follows the rules for
stateids in Sections 8.2.5 and 18.22.3 of [RFC5661]. If either stateids in Sections 8.2.5 and 18.22.3 of [RFC5661]. If either
stateid is invalid, then the operation MUST fail. stateid is invalid, then the operation MUST fail.
skipping to change at page 91, line 30 skipping to change at page 91, line 30
destination. Both cl_src_offset and cl_dst_offset must be aligned to destination. Both cl_src_offset and cl_dst_offset must be aligned to
the clone block size Section 12.2.1. cl_count must be aligned to the the clone block size Section 12.2.1. cl_count must be aligned to the
clone block size, unless cl_src_offset + cl_count are equal to the clone block size, unless cl_src_offset + cl_count are equal to the
source file size. source file size.
If the source offset or the source offset plus count is greater than If the source offset or the source offset plus count is greater than
the size of the source file, the operation will fail with the size of the source file, the operation will fail with
NFS4ERR_INVAL. The destination offset or destination offset plus NFS4ERR_INVAL. The destination offset or destination offset plus
count may be greater than the size of the destination file. count may be greater than the size of the destination file.
If the COPY wrote past the end of the file on the destination, then If the CLONE wrote past the end of the file on the destination, then
the last byte written to will determine the new file size. The the last byte written to will determine the new file size. The
contents of any block not written to and past the original size of contents of any block not written to and past the original size of
the file will be as if a normal WRITE extended the file. the file will be as if a normal WRITE extended the file.
The CLONE operation is atomic, that is either all changes or no The CLONE operation is atomic, that is either all changes or no
changes are seen by the client or other clients. changes are seen by the client or other clients.
The completion status of the operation is indicated by cr_status. The completion status of the operation is indicated by cr_status.
16. NFSv4.2 Callback Operations 16. NFSv4.2 Callback Operations
skipping to change at page 95, line 48 skipping to change at page 95, line 48
[T10-SBC2] [T10-SBC2]
Elliott, R., Ed., "ANSI INCITS 405-2005, Information Elliott, R., Ed., "ANSI INCITS 405-2005, Information
Technology - SCSI Block Commands - 2 (SBC-2)", November Technology - SCSI Block Commands - 2 (SBC-2)", November
2004. 2004.
Appendix A. Acknowledgments Appendix A. Acknowledgments
Tom Haynes would like to thank NetApp, Inc. for its funding of his Tom Haynes would like to thank NetApp, Inc. for its funding of his
time on this project. time on this project.
For the pNFS Access Permissions Check, the original draft was by
Sorin Faibish, David Black, Mike Eisler, and Jason Glasgow. The work
was influenced by discussions with Benny Halevy and Bruce Fields. A
review was done by Tom Haynes.
For the Sharing change attribute implementation characteristics with For the Sharing change attribute implementation characteristics with
NFSv4 clients, the original draft was by Trond Myklebust. NFSv4 clients, the original draft was by Trond Myklebust.
For the NFS Server Side Copy, the original draft was by James For the NFS Server Side Copy, the original draft was by James
Lentini, Mike Eisler, Deepak Kenchammana, Anshul Madan, and Rahul Lentini, Mike Eisler, Deepak Kenchammana, Anshul Madan, and Rahul
Iyer. Tom Talpey co-authored an unpublished version of that Iyer. Tom Talpey co-authored an unpublished version of that
document. It was also was reviewed by a number of individuals: document. It was also was reviewed by a number of individuals:
Pranoop Erasani, Tom Haynes, Arthur Lent, Trond Myklebust, Dave Pranoop Erasani, Tom Haynes, Arthur Lent, Trond Myklebust, Dave
Noveck, Theresa Lingutla-Raj, Manjunath Shankararao, Satyam Vaghani, Noveck, Theresa Lingutla-Raj, Manjunath Shankararao, Satyam Vaghani,
and Nico Williams. Anna Schumaker's early prototyping experience and Nico Williams. Anna Schumaker's early prototyping experience
 End of changes. 11 change blocks. 
24 lines changed or deleted 21 lines changed or added

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