<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.6.10) -->
<?rfc docmapping="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-nfsv4-uncacheable-directories-09" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Uncacheable Dirents">Adding an Uncacheable Directory-Entry Metadata Attribute to NFSv4.2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-nfsv4-uncacheable-directories-09"/>
    <author initials="T." surname="Haynes" fullname="Thomas Haynes">
      <organization>Hammerspace</organization>
      <address>
        <email>loghyr@gmail.com</email>
      </address>
    </author>
    <date/>
    <area>General</area>
    <workgroup>Network File System Version 4</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 33?>

<t>Network File System version 4.2 (NFSv4.2) clients may cache the
file attributes returned by READDIR alongside each directory
entry.  This caching is inherently best-effort: those attributes
belong to the underlying files and change when the files are
written, which the directory's change attribute does not track.
In some deployments the rate of file writes by other clients
makes such caching produce incorrect size and timestamp values
often enough to be a deployment problem.  This document introduces
an uncacheable dirent metadata attribute for NFSv4.2 that allows
a server to identify a directory for which an honoring client is
required to retrieve directory-entry metadata from the server on
each READDIR rather than serving the response from a local cache.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <?line 48?>

<t>Note to RFC Editor: please remove this section prior to publication.</t>
      <t>Discussion of this draft takes place
on the NFSv4 working group mailing list (nfsv4@ietf.org),
which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=nfsv4"/>. Source
code and issues list for this draft can be found at
<eref target="https://github.com/ietf-wg-nfsv4/uncacheable-directories"/>.</t>
      <t>Working Group information can be found at <eref target="https://github.com/ietf-wg-nfsv4"/>.</t>
    </note>
  </front>
  <middle>
    <?line 61?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Clients of remote filesystems may cache the file attributes returned
by READDIR alongside each directory entry, to reduce the volume of
follow-on GETATTR traffic for entries the client has already seen.
This caching is inherently best-effort -- writes to the underlying
files can change those attributes at any time, and the directory's
change attribute does not track such writes.  In some deployments
the cost of that staleness is high enough to be a deployment
problem; the conditions are described in <xref target="deployment-motivation"/>.</t>
      <t>In this document, the term directory is used to describe the
context in which directory entries are retrieved.  The uncacheable
dirent metadata attribute applies to the caching of directory-entry
metadata, including names and associated file object metadata such
as size and timestamps.  It does not prohibit caching of the
directory object itself, nor does it affect caching of file data.</t>
      <t>When this best-effort caching returns stale size and timestamp
information for concurrently modified files, it also undermines the
effectiveness of uncacheable file data semantics
(<xref target="I-D.ietf-nfsv4-uncacheable-files"/>) in the same deployment:
applications can observe inconsistent metadata and data views even
when file data caching is disabled.</t>
      <t>This document introduces the uncacheable dirent metadata attribute
to NFSv4.2 to allow servers to advise clients that caching of
directory-entry metadata is unsuitable.  Using the process detailed
in <xref target="RFC8178"/>, the revisions in this document become an extension
of NFSv4.2 <xref target="RFC7862"/>.  They are built on top of the external data
representation (XDR) <xref target="RFC4506"/> generated from <xref target="RFC7863"/>.</t>
    </section>
    <section anchor="deployment-motivation">
      <name>Deployment Motivation</name>
      <t>A class of deployment uses NFSv4.2 to serve a shared directory to
many concurrent NFSv4.2 client writers, each writing files within
the directory.  Workloads of this kind are typical of
High-Performance Computing (HPC) environments, where a single
output directory may receive results from hundreds or thousands of
compute nodes simultaneously, and of large-scale data-ingest
pipelines where many producers append to a common landing
directory.  The files within such a directory have their attributes
-- size and timestamps in particular -- modified at a high rate by
clients other than the one performing READDIR.</t>
      <t>NFSv4.2 client implementations typically cache READDIR responses for
a period bounded by either the directory's change attribute or a
heuristic timeout.  The cached file attributes returned by READDIR
are NOT invalidated by the directory's change attribute -- they are
only invalidated by writes to the underlying files, which the
directory's change attribute does not track.  In deployments of the
kind described above, the rate at which the underlying files are
written by other clients can exceed what such caches can track, so
that an NFSv4.2 client serving READDIR responses from its local cache
will, with some regularity, return file attribute values that no
longer reflect the current state of those files at the server.</t>
      <t>The fattr4_uncacheable_dirent_metadata attribute is the server's
mechanism to identify a directory for which this risk is high
enough that client-side caching is not safe.  When the server sets
the attribute on a directory, an honoring client retrieves
directory-entry metadata from the server on each READDIR rather
than from a local cache.</t>
    </section>
    <section anchor="definitions">
      <name>Definitions</name>
      <dl>
        <dt>dirent</dt>
        <dd>
          <t>A directory entry returned by READDIR -- the (name, file handle)
pair that names a file or subdirectory within a directory.  A dirent
itself does not include the file attributes returned alongside it.</t>
        </dd>
        <dt>dirent metadata</dt>
        <dd>
          <t>The file attributes (size, mtime, ctime, atime, mode, owner, etc.)
returned in a READDIR response alongside each dirent.  These attributes
belong to the underlying file object, not to the directory; they
change when the underlying file is written, which is independent of
the directory's change attribute.  The term "dirent metadata" in this
document is a naming convenience for "the file attributes that arrive
in a READDIR response"; it does not assert that those attributes
inherit the directory's cache-coherence semantics.</t>
        </dd>
        <dt>dirent caching</dt>
        <dd>
          <t>A client-side cache of READDIR results -- the (name, file handle,
file attributes) tuples -- used to avoid repeated READDIR and GETATTR
traffic.  Because the file attributes in a cached READDIR response are
not invalidated by the directory's change attribute (only by writes to
the underlying files), this caching is inherently best-effort and
subject to staleness whenever the underlying files are modified.</t>
        </dd>
        <dt>uncacheable dirent metadata attribute</dt>
        <dd>
          <t>An NFSv4.2 file attribute that advises clients not to cache
directory-entry metadata associated with file objects, including
names, size, and timestamps.</t>
        </dd>
      </dl>
      <t>This document assumes familiarity with NFSv4.2 operations, attributes,
and error handling as defined in <xref target="RFC8881"/> and <xref target="RFC7862"/>.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="caching-of-directory-entry-metadata">
      <name>Caching of Directory-Entry Metadata</name>
      <t>The uncacheable dirent metadata attribute enables servers to identify
directories where the staleness of cached READDIR attributes is
particularly likely and particularly damaging.  It is an <bcp14>OPTIONAL</bcp14>
attribute to implement for NFSv4.2.  If both the client and the
server support this attribute, and the attribute is set on a
directory, the client <bcp14>MUST</bcp14> retrieve directory-entry metadata from
the server on each READDIR rather than serving the response from
a local cache.</t>
      <t>This document specifies the required observable behavior rather
than mandating a particular internal implementation strategy.
Clients <bcp14>MAY</bcp14> employ more sophisticated mechanisms, such as
time-limited caches that revalidate against the server on each
READDIR, provided that the externally visible behavior is
equivalent to retrieving directory-entry metadata from the
server on each READDIR.</t>
      <t>Allowing clients to set this attribute provides a portable mechanism
to request that directory-entry metadata not be cached, without
requiring changes to application behavior or out-of-band administrative
configuration.</t>
      <t>A client can determine whether the uncacheable dirent metadata attribute
is supported for a given directory by examining the supported_attrs
attribute for that directory's filesystem or by probing support using
the procedures described in <xref target="RFC8178"/>.</t>
      <t>The only way that the server can determine that the client supports
the attribute is if the client sends either a GETATTR or a SETATTR
with the uncacheable dirent metadata attribute.</t>
      <t>The uncacheable dirent metadata attribute governs the client's
caching of READDIR responses for the directory.  It does NOT govern:</t>
      <ul spacing="normal">
        <li>
          <t>The client's per-file attribute cache for individual children of
the directory, populated by direct GETATTR (for example, following
a LOOKUP).  Such caches are governed by the attribute-cache
mechanisms already defined by NFSv4.2 and are subject to the same
staleness from concurrent writes; clients in deployments using
this attribute may wish to apply correspondingly short cache
lifetimes to per-file attributes for children of the directory,
but the present attribute does not require this.</t>
        </li>
        <li>
          <t>The directory's own attribute cache.  The directory object's own
attributes (mode, owner, etc.) can be cached normally and
revalidated via the directory's change attribute as usual.</t>
        </li>
        <li>
          <t>Operations that do not return file attributes in their response
(for example, LOOKUP without a following GETATTR, ACCESS).  These
are unaffected.</t>
        </li>
      </ul>
      <t>The uncacheable dirent metadata attribute addresses a different
aspect of client-side caching than fattr4_uncacheable_file_data
(<xref target="I-D.ietf-nfsv4-uncacheable-files"/>).  The file data attribute
governs caching of file contents, while the dirent metadata
attribute governs caching of file attributes returned by READDIR.
The attributes are independent and may be used separately.</t>
      <t>This attribute follows the same pattern as
fattr4_uncacheable_file_data (<xref target="I-D.ietf-nfsv4-uncacheable-files"/>)
applied at the file-data layer.  In both cases:</t>
      <ul spacing="normal">
        <li>
          <t>The underlying NFSv4.2 protocol permits client-side caching that
can become stale.</t>
        </li>
        <li>
          <t>Client caching of the relevant data is widely implemented in
practice and reduces network traffic for stable objects.</t>
        </li>
        <li>
          <t>For specific objects where the deployment knows the caching will
produce incorrect results, the server requires a mechanism to
instruct an honoring client to suppress the caching for those
specific objects.</t>
        </li>
        <li>
          <t>The attribute does not redefine the legality of caching in the
general case.  It is a per-object server-side signal that the
caching is known to be unsuitable for that object.</t>
        </li>
      </ul>
      <t>The attribute does NOT make READDIR-attr caching reliable for
directories where it is not set.  Clients <bcp14>MUST NOT</bcp14> interpret the
absence of fattr4_uncacheable_dirent_metadata, or its value being
false, as a guarantee that cached READDIR attributes are
authoritative.  As stated in <xref target="RFC8881"/> Section 10.3.2, all
client-cached attributes are subject to staleness; the attribute
defined in this document only identifies directories for which
staleness is particularly likely and particularly damaging.</t>
      <t>This attribute does not define behavior for positive or negative
name caching or for caching of LOOKUP results outside the scope of
file attributes returned by READDIR.</t>
      <t>Directory delegations grant a client exclusive caching rights subject
to server recall.  In deployments where directory contents change at
a rate that makes per-change recall impractical, a directory delegation
does not provide the always-refetch semantics defined by the uncacheable
dirent metadata attribute.  These mechanisms are independent.</t>
      <t>Clients <bcp14>MUST NOT</bcp14> assume that directory-entry metadata is valid beyond
the READDIR that produced it.</t>
      <section anchor="sec_dirents">
        <name>Uncacheable Directory-Entry Metadata</name>
        <t>The fattr4_uncacheable_dirent_metadata attribute is a read-write boolean
attribute that applies to directory objects.
Authorization to query or modify this attribute is governed by
existing NFSv4.2 authorization mechanisms.</t>
        <t>Because the attribute applies only to directory objects, a server <bcp14>MUST</bcp14>
return NFS4ERR_INVAL in response to a GETATTR or SETATTR that requests
fattr4_uncacheable_dirent_metadata on an object that is not a directory.</t>
        <t>This attribute is set per directory.  This document does not define
propagation of the attribute to subdirectories created within a
directory on which it is set; any such inheritance is a matter of
local server policy.</t>
        <t>If a directory object has the uncacheable dirent metadata attribute
set, the client <bcp14>MUST</bcp14> retrieve directory-entry metadata from the
server on each READDIR rather than serving the response from a
local cache.  This ensures that the returned metadata reflects
the current state of the directory as determined by the server.</t>
        <t>The uncacheable dirent metadata attribute does not modify the
semantics of the NFSv4.2 change attribute.  Clients <bcp14>MUST</bcp14> continue to
use the change attribute to detect directory modifications and to
determine when directory contents may have changed, even when
directory-entry metadata caching is suppressed.  Suppressing caching
of directory-entry metadata does not remove the need for change-based
validation.</t>
        <t>Servers <bcp14>SHOULD</bcp14> assume that clients which do not query or set this
attribute may cache directory-entry metadata, and therefore <bcp14>SHOULD
NOT</bcp14> rely on this attribute for correctness unless client support
is confirmed.</t>
        <t>A directory delegation grants a client the right to cache
directory-entry metadata until the server recalls the delegation.
The always-refetch rule of this attribute is incompatible with that
grant.  If a directory has both the uncacheable dirent metadata
attribute set and an outstanding directory delegation, the server
<bcp14>MUST</bcp14> recall the delegation, after which the client follows the
always-refetch rule on each subsequent READDIR.  A server <bcp14>MUST NOT</bcp14>
grant a new directory delegation on a directory while the
uncacheable dirent metadata attribute is set on that directory.</t>
      </section>
    </section>
    <section anchor="example-directory-enumeration-with-and-without-dirent-metadata-caching">
      <name>Example: Directory Enumeration With and Without Dirent Metadata Caching</name>
      <t>This example illustrates the difference in client-visible behavior when
directory-entry metadata caching is enabled versus when the uncacheable
dirent metadata attribute is set on a directory.  In both scenarios,
the set of entries in the directory does not change between the two
calls; an attribute value of one entry is updated at the server
between calls.  The difference is whether the second call observes
the updated attribute value.</t>
      <section anchor="classic-directory-enumeration-directory-entry-metadata-cached">
        <name>Classic Directory Enumeration (Directory-Entry Metadata Cached)</name>
        <t>In this scenario, the client caches directory-entry metadata obtained
from the server and reuses it for the second readdir.</t>
        <figure anchor="fig-cached-dirents">
          <name>Directory-Entry Metadata Cached</name>
          <artwork><![CDATA[
Application             NFSv4.2 Client        NFSv4.2 Server
-----------             --------------        --------------
readdir("/dir")
   |
   |                     READDIR
   |-------------------->------------------------>
   |                     entries:
   |                       a (size=100)
   |                       b (size=200)
   |                       c (size=300)
   |<--------------------<------------------------
   |
(entries cached in client)

                                            (concurrent writer extends
                                             a from size=100 to
                                             size=500)

readdir("/dir")
   |
   |                     (no network traffic)
   |                     entries returned from
   |                     client cache:
   |                       a (size=100)
   |                       b (size=200)
   |                       c (size=300)
]]></artwork>
        </figure>
        <t>In this case, <xref target="fig-cached-dirents"/> shows that directory-entry
metadata retrieved by the first READDIR is reused to satisfy the
second.  The cached response reflects entry a's size as it was
at the time of the first call; it does not reflect the update
that occurred at the server between calls.  This behavior is
typical of legacy NFSv4.2 clients and maximizes performance, but
it can result in applications observing dirent attribute values
that do not reflect the current state of the server.</t>
      </section>
      <section anchor="directory-enumeration-with-uncacheable-dirent-metadata">
        <name>Directory Enumeration With Uncacheable Dirent Metadata</name>
        <t>In this scenario, the directory has the uncacheable dirent metadata
attribute set.  The client retrieves directory-entry metadata from
the server on each READDIR.</t>
        <figure anchor="fig-uncached-dirents">
          <name>Directory-Entry Metadata Not Cached</name>
          <artwork><![CDATA[
Application             NFSv4.2 Client        NFSv4.2 Server
-----------             --------------        --------------
readdir("/dir")
   |
   |                     READDIR
   |-------------------->------------------------>
   |                     entries:
   |                       a (size=100)
   |                       b (size=200)
   |                       c (size=300)
   |<--------------------<------------------------
   |
(no directory-entry metadata retained)

                                            (concurrent writer extends
                                             a from size=100 to
                                             size=500)

readdir("/dir")
   |
   |                     READDIR
   |-------------------->------------------------>
   |                     entries:
   |                       a (size=500)
   |                       b (size=200)
   |                       c (size=300)
   |<--------------------<------------------------
]]></artwork>
        </figure>
        <t>In this case, <xref target="fig-uncached-dirents"/> shows that each readdir
request results in a READDIR operation sent to the server, so
the second call observes the updated size of entry a.  The set
of entries returned is unchanged between calls; only the
attribute value differs.  The client may still cache other
information, provided the externally observable behavior is
equivalent to retrieving directory-entry metadata from the
server on each READDIR.</t>
      </section>
      <section anchor="discussion">
        <name>Discussion</name>
        <t>This example demonstrates that the uncacheable dirent metadata
attribute does not mandate a particular client implementation, but
it does require the always-refetch behavior specified in
<xref target="sec_dirents"/>.  The attribute ensures that NFSv4.2 clients observe
file attribute values reflecting the current state of the server in
deployments where staleness of READDIR-returned attributes is known
to be a recurring problem.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: please remove this section prior to publication.</t>
      <t>There is a prototype Hammerspace server which implements the
uncacheable dirent metadata attribute and a prototype Linux client
which treats the attribute as an indication to retrieve directory-
entry metadata from the server on each READDIR rather than from a
local cache.</t>
      <t>In the prototype, directories whose contents change at the server
at a rate exceeding typical client cache lifetimes are marked with
the fattr4_uncacheable_dirent_metadata attribute.</t>
      <t>The Linux client decodes the attribute in fs/nfs/nfs4xdr.c into a
per-inode flag (nfsi-&gt;uncacheable).  The readdir path in fs/nfs/dir.c
consults this flag to skip the readdir cache and refetch from the
server on each readdir call.  Clients may employ more sophisticated
mechanisms, such as time-limited caches that revalidate against the
server on each READDIR, provided that the externally observable
behavior matches the always-refetch semantics described in this
document.</t>
      <t>At the time of writing, the prototype encodes the attribute on the
wire alongside the companion file-data attribute defined in
<xref target="I-D.ietf-nfsv4-uncacheable-files"/> as a single shared flag.  A
follow-on prototype branch separates the two attributes as the
two documents specify.</t>
      <t>Experience with the prototype indicates that the attribute enables
servers to identify directories whose contents change faster than
typical NFSv4.2 client cache lifetimes can track, while remaining
compatible with existing NFSv4.2 semantics.</t>
    </section>
    <section anchor="xdr-for-uncacheable-dirents-attribute">
      <name>XDR for Uncacheable Dirents Attribute</name>
      <sourcecode type="xdr"><![CDATA[
///
/// typedef bool            fattr4_uncacheable_dirent_metadata;
///
/// const FATTR4_UNCACHEABLE_DIRENT_METADATA   = 88;
///
]]></sourcecode>
    </section>
    <section anchor="extraction-of-xdr">
      <name>Extraction of XDR</name>
      <t>This document contains the external data representation (XDR)
<xref target="RFC4506"/> description of the uncacheable dirent metadata attribute.  The XDR
description is presented in a manner that facilitates easy extraction
into a ready-to-compile format. To extract the machine-readable XDR
description, use the following shell script:</t>
      <sourcecode type="shell"><![CDATA[
#!/bin/sh
grep '^ *///' $* | sed 's?^ */// ??' | sed 's?^ *///$??'
]]></sourcecode>
      <t>For example, if the script is named 'extract.sh' and this document is
named 'spec.txt', execute the following command:</t>
      <sourcecode type="shell"><![CDATA[
sh extract.sh < spec.txt > uncacheable_prot.x
]]></sourcecode>
      <t>This script removes leading blank spaces and the sentinel sequence '///'
from each line. XDR descriptions with the sentinel sequence are embedded
throughout the document.</t>
      <t>Note that the XDR code contained in this document depends on types from
the NFSv4.2 nfs4_prot.x file (generated from <xref target="RFC7863"/>).  This includes
both nfs types that end with a 4, such as offset4, length4, etc., as
well as more generic types such as uint32_t and uint64_t.</t>
      <t>While the XDR can be appended to that from <xref target="RFC7863"/>, the code snippets
should be placed in their appropriate sections within the existing XDR.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This attribute is not a security mechanism.  It addresses correctness
of client-side caching when client-cached directory-entry metadata
can become stale relative to the current state of the directory at
the server.  It does not change NFSv4.2 authentication or authorization
semantics, and it does not impose access controls on the entries it
describes.</t>
      <t>Authorization to set or modify the fattr4_uncacheable_dirent_metadata
attribute is governed by existing NFSv4.2 authorization mechanisms.
Servers <bcp14>MAY</bcp14> restrict modification of this attribute based on local
policy, file ownership, or access control rules.  This document does
not define a new authorization model.</t>
      <t>Because the attribute is visible to and affects the caching behavior
of all honoring clients, servers should consider the implications of
allowing unprivileged users to set or clear it.  Setting the attribute
on a directory forces honoring clients to abandon READDIR caching and
refetch directory-entry metadata on every enumeration, which can
increase load on the server and on other clients.  A server <bcp14>MAY</bcp14>
restrict modification of the attribute based on administrative
configuration, export policy, or ownership.</t>
      <t>If the client supports Labeled NFS (see <xref target="RFC7204"/> for background),
the client <bcp14>MUST</bcp14> locally enforce the MAC security policies defined by
NFSv4.2 (<xref target="RFC7862"/>, Section 9).  This obligation is independent of
whether directory-entry metadata is cached or refetched.</t>
      <t>The uncacheable dirent metadata attribute allows servers to indicate
that directory-entry metadata should not be assumed to remain valid
beyond the READDIR that produced it.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4506">
          <front>
            <title>XDR: External Data Representation Standard</title>
            <author fullname="M. Eisler" initials="M." role="editor" surname="Eisler"/>
            <date month="May" year="2006"/>
            <abstract>
              <t>This document describes the External Data Representation Standard (XDR) protocol as it is currently deployed and accepted. This document obsoletes RFC 1832. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="67"/>
          <seriesInfo name="RFC" value="4506"/>
          <seriesInfo name="DOI" value="10.17487/RFC4506"/>
        </reference>
        <reference anchor="RFC7862">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 2 Protocol</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document describes NFS version 4 minor version 2; it describes the protocol extensions made from NFS version 4 minor version 1. Major extensions introduced in NFS version 4 minor version 2 include the following: Server-Side Copy, Application Input/Output (I/O) Advise, Space Reservations, Sparse Files, Application Data Blocks, and Labeled NFS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7862"/>
          <seriesInfo name="DOI" value="10.17487/RFC7862"/>
        </reference>
        <reference anchor="RFC7863">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 2 External Data Representation Standard (XDR) Description</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides the External Data Representation (XDR) description for NFS version 4 minor version 2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7863"/>
          <seriesInfo name="DOI" value="10.17487/RFC7863"/>
        </reference>
        <reference anchor="RFC8178">
          <front>
            <title>Rules for NFSv4 Extensions and Minor Versions</title>
            <author fullname="D. Noveck" initials="D." surname="Noveck"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document describes the rules relating to the extension of the NFSv4 family of protocols. It covers the creation of minor versions, the addition of optional features to existing minor versions, and the correction of flaws in features already published as Proposed Standards. The rules relating to the construction of minor versions and the interaction of minor version implementations that appear in this document supersede the minor versioning rules in RFC 5661 and other RFCs defining minor versions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8178"/>
          <seriesInfo name="DOI" value="10.17487/RFC8178"/>
        </reference>
        <reference anchor="RFC8881">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 1 Protocol</title>
            <author fullname="D. Noveck" initials="D." role="editor" surname="Noveck"/>
            <author fullname="C. Lever" initials="C." surname="Lever"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This document describes the Network File System (NFS) version 4 minor version 1, including features retained from the base protocol (NFS version 4 minor version 0, which is specified in RFC 7530) and protocol extensions made subsequently. The later minor version has no dependencies on NFS version 4 minor version 0, and is considered a separate protocol.</t>
              <t>This document obsoletes RFC 5661. It substantially revises the treatment of features relating to multi-server namespace, superseding the description of those features appearing in RFC 5661.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8881"/>
          <seriesInfo name="DOI" value="10.17487/RFC8881"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-nfsv4-uncacheable-files">
          <front>
            <title>Adding an Uncacheable File Data Attribute to NFSv4.2</title>
            <author fullname="Thomas Haynes" initials="T." surname="Haynes">
              <organization>Hammerspace</organization>
            </author>
            <date day="27" month="June" year="2026"/>
            <abstract>
              <t>   Network File System version 4.2 (NFSv4.2) clients commonly perform
   client-side caching of file data in order to improve performance.  On
   some systems, applications may influence client data caching
   behavior, but there is no standardized mechanism for a server or
   administrator to indicate that particular file data should not be
   cached by clients for reasons of performance or correctness.  This
   document introduces a new file data caching attribute for NFSv4.2.
   Files marked with this attribute are intended to be accessed with
   client-side caching of file data suppressed, in order to support
   workloads that require predictable data visibility.  This document
   extends NFSv4.2.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-nfsv4-uncacheable-files-10"/>
        </reference>
        <reference anchor="RFC7204">
          <front>
            <title>Requirements for Labeled NFS</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>This memo outlines high-level requirements for the integration of flexible Mandatory Access Control (MAC) functionality into the Network File System (NFS) version 4.2 (NFSv4.2). It describes the level of protections that should be provided over protocol components and the basic structure of the proposed system. The intent here is not to present the protocol changes but to describe the environment in which they reside.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7204"/>
          <seriesInfo name="DOI" value="10.17487/RFC7204"/>
        </reference>
      </references>
    </references>
    <?line 555?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Trond Myklebust, Mike Snitzer, Jon Flynn, Keith Mannthey, and Thomas
Haynes all worked on the prototype at Hammerspace.</t>
      <t>Rick Macklem, Chuck Lever, Dave Noveck, and Sorin Faibish reviewed
the document.</t>
      <t>Chris Inacio, Brian Pawlowski, Chuck Lever, Zahed Sarker, and
Gorry Fairhurst helped guide this process.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIADqmY2oAA+1cbXPbyJH+Pr9iIqfKUoqUbK+SeOV9CVeSd33xy54lZ5NL
5VQgOCQnAgEGA0pmfM5vud9yv+ye7p4BBiAoUam7yl3dqZK1RAIzg57up59+
GQyHQ1XZKjMnejSZ2Hymk1x/yNMknZtknBl9ZkuTVkW5Hp7nVbnWb0yVTJIq
0aOqKu14VRldFfrty4ub48NnKhmPS3NzsjFCXjk1KdI8WWCiSZlMq6E11XSY
T93N8XDVXD2c+PmsccMnX6o0qcwMs59oV00UJsb9n85Gl+efVVrkzuRu5U50
Va6MssuSf3PVsydPvnyCxZQmOdHfm9yUSaZui/J6Vhar5Yl+ayr6S7+0WN7F
2lVmoX9nSmeLXB+ra7PGt5MT/SqvTJmbanhGC1bKVUk+uUqyIsci1sappT3R
f6yKdKBdUValmTr8tl7IL3jcRbJcQqQDnRaLBcngT0olq2pelCdKD5XGj82x
/MtD/UOyzjEifSRCupwXi8TFnxflLMntX5MKyzzBFxiydMskNfytWSQ2O9FZ
MZuvy9/M6K9DTKtUXpQL3HNjMKd+//L0+JdPfuV//fXzXz1rfv3C//r86a+f
h1+fP396opTNp/Egr4Znh1t2bwqJujDksyfHJ2o4HOpk7KoySSHCPsnfBMkf
PtP7XpEOdJpZkpheJGvN4+tqbhSNr5OgeU6XplphiyZ6vNbvz0dnZ6/ea9qg
mbMTow3u00Gh1sqQAh9qiNY6HpPUHb/afG5IRbO1HhtXDc0Uj1tBl+aFi2dT
Y0NDk75jLXqVT0yZrWkQfmxYzkSn8ySfGX07Nzlf5L8pjbotbVWZfIDvLJZF
X9ZLe+zCjfVs0B/cmBeVJtFdH6pXObRsgc/NMivWrE48SAmb0MWUZ9I0CW6D
NAp8VwYpqkVyjY/dChOHB1+WxWSVGjx9WpS0Du3sXw0/RGUXkEOyWOqbJFvh
wYspVq5NXqxmc3r8Ma6LFkJjYfcXQbZQ/RV/biFxnsUpwEqkKPzouGAR0KR5
bsg+wAmeL6mwn1lxiwG0MyV0hebH5uaVna5pFUGGfKPIFnPNC+g9PaZIANus
SvOXFS6e0ADQGyDMTbQFQ9aOZkHTsliwfP2sRa5YnYKWQewkYKww50toLt4O
45YETDJAAoNMk0w0+FCxNWBPzdVb+k9VXL03CbTIwTIKQVIYjj6fWCzpRC8z
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

-->

</rfc>
