<?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-08" 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-08"/>
    <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>Client implementations may cache the file attributes returned by
READDIR alongside the dirents themselves.  This caching is
inherently best-effort: the file attributes can change at any time
as a result of writes to the underlying files, which the directory's
change attribute does not track.  When this caching returns stale
size and timestamp information for files that have been modified
concurrently, it also undermines the effectiveness of uncacheable
file data semantics (<xref target="I-D.ietf-nfsv4-uncacheable-files"/>) in the
same deployment.  This can lead to applications observing
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>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>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-09"/>
        </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 542?>

<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, and Dave Noveck reviewed the document.</t>
      <t>Chris Inacio, Chuck Lever, Brian Pawlowski, and Gorry Fairhurst
helped guide this process.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAF5BQ2oAA+1c63LjyHX+30/R1rhqJBfJuaxsz2r2Yq2k2Z14LpuRJmuX
y1GBYJNsCwRoNCgNrcw+S54lT5bvnNMNNEBQolxJOalEZe9IJNCX0+d85zsX
YDgcqspWmTnSx5OJzWc6yfXHPE3SuUnGmdGntjRpVZTr4VlelWv91lTJJKkS
fVxVpR2vKqOrQr97dX59OHqukvG4NNdHGyPklVOTIs2TBSaalMm0GlpTTYf5
1F0fDlfN1cOJn88aN3z6QqVJZWaY/Ui7aqIwMe6/PT2+OPus0iJ3Jncrd6Sr
cmWUXZb8m6ueP3365VMspjTJkf7e5KZMMnVTlFezslgtj/Q7U9Ff+pXF8s7X
rjIL/S+mdLbI9aG6Mmt8OznSr/PKlLmphqe0YKVcleSTyyQrcixibZxa2iP9
p6pIB9oVZVWaqcNv64X8gu0ukuUSIh3otFgsSAZ/VipZVfOiPFJ6qDR+bI7l
X4z0D8k6x4j0kQjpYl4sEhd/XpSzJLd/Syos8whfYMjSLZPU8LdmkdjsSGfF
bL4ufzejv0aYVqm8KBe459pgTv3h1cnhr5/+xv/62xe/ed78+oX/9cWz374I
v7548exIKZtP40FeD09HW05vCom6MOTzp4dHajgc6mTsqjJJIcI+yV8HyY+e
632vSAc6zSxJTC+StebxdTU3isbXSdA8p0tTrXBEEz1e6w9nx6enrz9oOqCZ
sxOjDe7TQaHWypACjzREax2PSeqOX20+N6Si2VqPjauGZortVtCleeHi2dTY
0NCk71iLXuUTU2ZrGoS3DcuZ6HSe5DOjb+Ym54v8N6VRN6WtKpMP8J3FsujL
emmPXbixng36gxvzotIkuquRep1Dyxb43CyzYs3qxIOUsAldTHkmTZPgNkij
wHdlkKJaJFf42K0wcdj4siwmq9Rg92lR0jq0s38zvInKLiCHZLHU10m2wsaL
KVauTV6sZnPa/hjXRQuhsXD6iyBbqP6KP7eQOM/iFGAlUhTeOi5YBDRp9g3Z
BzjB/pIK55kVNxhAO1NCV2h+HG5e2emaVhFkyDeKbDHXvIDe0zZFAjhmVZq/
rnDxhAaA3gBhrqMjGLJ2NAualsWC5etnLXLF6hS0DGInAWOFOV9Cc/FxGLck
YJIBEhhkmmSiwSPF1oAzNZfv6D9VcfnBJNAiB8soBElhOPpsYrGkI73MTOJo
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
svFZLMisQUw5FAr2xXd6ZJ5ImejRo92ec7h95Ezqzd19/vsKk9SdlUyGzL7h
RYvMJHmcXeL0dNNw1+WnwPBjQQTp/qdrELzT96Vkytddyo4/olhDmU+UIYmc
dNIarzkN6kmctvTDwzt1ge4efgNg/9601R3Zj12brlWctvINXPSkSBnyPnKP
t+p6dl+r9n2hm8Xq2Ao55e6j8doEWsXr3WhzbXL1MdLmg4n5aetS/maZrmUq
BA02X1G6UoXK0UbYwV2kFR1p1KbD1ZbQ0sZ5yUK10i95HwIRd+VWGJlkMmja
27aXsCMmELgMt6ae+z+Y7vi63Ga3aTNORGJ8e7yBF/DZHlnQcAy2MlE+LpMM
07nPNPs8eowsISj2zbQSgdV2FnJskd02/aHbVlkneaFblKuUWalaQmRlzU1r
XZ5fak8c2Yeu8oz+aed5KL3FqbNywWHacS+eizNyjTditSf/09S9top3BVXK
2oyV/IjzPDjM4WOcto8oV5mpu8za2aic+rtwJ1mFTzTBgfFCJZfebrNyTW79
DnuKjoROiZMjOfv2Stq7esUT83HlAYpdZXuHOMIpDCHq3PHSjCIy1SsAD15w
9Y5yrbglsAfqePBiDT5OBeaQm5v+02x3kDRx624F0qi20HajXBM8k7zBUeMG
9VkOw5CchP6JTorE+pPPJ8gzfY2TPAmFdMFaGU0jIFpJ/t6rjc8LcHQUwsKN
vPnO8CHFowk/QLZycUfELg3uUa2lnV30ca5LMX5pCzfwhRROY4TGegmM4oMK
cOQBd4yA0/gFIfRUbDwvSS87LVM0KvX3yT6pt3YpSaRW/leF8XicOo/VyNO1
kuSgLAU9jUbqLAUZI26tGby1COFDJ9S0isixXwn2t1KkEw41DprHGYLsWhzA
p0G3nmwxrhLypqrb5CRxPHfP2qrOCPstErHCkNjAzz//rI6jEkT8EzyoTy10
PhWfQE/vhJ/WzcPWT/+nyq9jf+8J/rt3QM9k/hv/R/f9hLZHumDY8/NN34f8
xfYxvWoebb+CctPc9vT1s6dPD+66buyve37Pdam/7otw3Vd9i+79kKXGUtoP
RuVD1hoboFFb5u392e8muktpI5+4Bw2jPQ8NgpK0zAN++MZfk0QeqBX7edFN
VN0h/SC1mshyzXbr5bEV/uN0hIz09kg/mtqZz1AM66dk6DH0r/fuQZm9zw3M
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
WgAA

-->

</rfc>
