<?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.30 (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-files-06" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Uncacheable File">Adding an Uncacheable File Data Attribute to NFSv4.2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-nfsv4-uncacheable-files-06"/>
    <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 57?>

<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 (see RFC7862).</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <?line 71?>

<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-files"/>.</t>
      <t>Working Group information can be found at <eref target="https://github.com/ietf-wg-nfsv4"/>.</t>
    </note>
  </front>
  <middle>
    <?line 82?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Clients of remote filesystems commonly perform client-side caching
of file data in order to improve performance.  Such caching may
include retaining data read from the server to satisfy subsequent
READ requests, as well as retaining data written by applications
in order to delay or combine WRITE requests before transmitting
them to the server.  While these techniques are effective for many
workloads, they may be unsuitable for workloads that require
predictable data visibility or involve concurrent modification of
shared files by multiple clients.</t>
      <t>In some cases, Network File System version 4.2 (NFSv4.2) (see
<xref target="RFC7862"/>)  mechanisms such as file delegations can reduce the
impact of concurrent access.  However, delegations are not always
available or effective, particularly for workloads with frequent
concurrent writers or rapidly changing access patterns.</t>
      <t>There have been prior efforts to bypass file data caching in order to
address these issues.  In High-Performance Computing (HPC) workloads,
file data caching is often bypassed to improve predictability and to
avoid read-modify-write hazards when multiple clients write disjoint
byte ranges of the same file.</t>
      <t>Applications on some systems can request bypass of the client data
cache by opening files with the O_DIRECT flag (see <xref target="OPEN-O_DIRECT"/>).
However, this approach has limitations, including the requirement
that each application be explicitly modified and the lack of a
standardized mechanism for communicating this intent between servers
and clients.</t>
      <t>This document introduces the uncacheable file data attribute to
NFSv4.2.  This <bcp14>OPTIONAL</bcp14> attribute allows a server to indicate that
client-side caching of file data for a particular file is unsuitable.
When both the client and the server support this attribute, the
client is advised to suppress client-side caching of file data for
that file, in accordance with the semantics defined in this document.</t>
      <t>The uncacheable file data attribute is read-write, applies on a
per-file basis, and has a data type of boolean.</t>
      <t>Support for the uncacheable file data attribute is specific to the
exported filesystem and may differ between filesystems served by the
same server.  A client can determine whether the attribute is
supported for a given file by issuing a GETATTR request and examining
the returned attribute list.</t>
      <t>The uncacheable file data attribute applies only to regular files
(NF4REG).  Attempts to query or set this attribute on objects of
other types <bcp14>MUST</bcp14> result in an error of NFS4ERR_INVAL. Since the
uncacheable file data attribute applies only to regular files,
attempts to apply it to other object types represent an invalid use
of the attribute.</t>
      <t>Using the process described in <xref target="RFC8178"/>, the revisions in this
document extend 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 anchor="definitions">
        <name>Definitions</name>
        <dl>
          <dt>client-side caching of file data</dt>
          <dd>
            <t>The retention of file data by a client in a local data cache, commonly
referred to as the page cache, for the purpose of satisfying subsequent
READ requests or delaying transmission of WRITE data to the server.</t>
          </dd>
          <dt>write-behind caching</dt>
          <dd>
            <t>A form of file data caching in which WRITE data is retained by the
client and transmission of the data to the server is delayed in order
to combine multiple WRITE operations or improve efficiency.</t>
          </dd>
          <dt>direct I/O</dt>
          <dd>
            <t>An access mode in which file data is transferred between application
buffers and the underlying storage without populating or consulting
the client's file data cache.  Direct I/O suppresses both read caching
and write-behind caching of file data.</t>
          </dd>
          <dt>write hole</dt>
          <dd>
            <t>A write hole is an instance of data corruption that arises when
multiple clients modify disjoint byte ranges within the same encoded
data block without having a consistent view of the existing contents.
This can result in stale data overwriting newer updates, particularly
in environments that use erasure encoding or striped storage.
(Adapted from <xref target="I-D.haynes-nfsv4-flexfiles-v2"/>.)</t>
          </dd>
        </dl>
        <t>This document assumes familiarity with the NFSv4 protocol operations,
error codes, object types, and attributes as defined in <xref target="RFC8881"/>.</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>
    <section anchor="client-side-caching-of-file-data">
      <name>Client-Side Caching of File Data</name>
      <t>The uncacheable file data attribute advises the client to limit the
use of client-side caching of file data for a file. This includes
both write-behind caching and read caching, which are addressed
separately below.</t>
      <t>The intent of this attribute is to allow a server or administrator
to indicate that client-side caching of file data for a particular
file is unsuitable. The server is often in a better position than
individual clients to determine sharing patterns, access behavior,
or correctness requirements associated with a file. By exposing
this information via an attribute, the server can advise clients
to limit file data caching in a consistent manner.</t>
      <section anchor="write-behind-caching">
        <name>Write-Behind Caching</name>
        <t>The uncacheable file data attribute inhibits write-behind caching,
in which multiple pending WRITEs are combined and transmitted to
the server at a later time for efficiency.</t>
        <t>When honoring the uncacheable file data attribute, clients <bcp14>SHOULD
NOT</bcp14> delay transmission of WRITE data for the purpose of combining
multiple WRITE operations or improving efficiency.</t>
        <t>One important use case for this attribute arises in connection with
High-Performance Computing (HPC) workloads. These workloads often
involve concurrent writers modifying disjoint byte ranges of shared
files.</t>
        <t>When application data spans a data block in a client cache, delayed
transmission of WRITE data can result in clients modifying stale
data and overwriting updates written by others. Prompt transmission
of WRITE data enables the prompt detection of write holes and reduces
the risk of data corruption.</t>
      </section>
      <section anchor="read-caching">
        <name>Read Caching</name>
        <t>The uncacheable file data attribute may also influence the use of
read caching. Retaining cached READ data while other clients
concurrently modify disjoint byte ranges of the same file can result
in read-modify- write operations based on stale data.</t>
        <t>Clients <bcp14>SHOULD</bcp14> ensure that cached file data is not reused without
first validating that the file has not changed.</t>
        <t>At a minimum, clients <bcp14>MUST</bcp14> revalidate metadata necessary to ensure
correctness of cached file data, including the change attribute and
file size. These attributes provide the primary mechanism for
detecting modification of file contents.</t>
        <t>Clients <bcp14>MAY</bcp14> revalidate additional attributes (e.g., modification
time or change time) as required by their local semantics or
application requirements.</t>
        <t>Failure to perform such revalidation can result in the client
presenting stale or inconsistent file state (e.g., incorrect size
or timestamps) to the application.</t>
        <t>Suppressing read caching in addition to suppressing write-behind
caching can further reduce the risk of stale-data overwrite in
multi-writer workloads. However, in some cases read caching may
remain appropriate, such as when the file is opened read-only or
when a delegation ensures a consistent view of the file.</t>
      </section>
      <section anchor="relationship-to-direct-io">
        <name>Relationship to Direct I/O</name>
        <t>While similar in intent to O_DIRECT (<xref target="OPEN-O_DIRECT"/>) and
forcedirectio (<xref target="SOLARIS-FORCEDIRECTIO"/>), the uncacheable file
data attribute operates at the protocol level and is advisory.
Clients retain flexibility in how they satisfy the requirements
described above.</t>
      </section>
    </section>
    <section anchor="sec_setting">
      <name>Setting the Uncacheable File Data Attribute</name>
      <t>The uncacheable file data attribute provides a mechanism by which
a server or administrator can indicate that client-side caching of
file data for a file is unsuitable.</t>
      <t>In some deployments, applications or administrative tools may request
that this attribute be set on a file in order to influence client
behavior. For example, applications that require predictable data
visibility or that would otherwise rely on mechanisms such as
O_DIRECT may use this attribute as a protocol-visible hint to the
server.</t>
      <t>However, the setting of this attribute is subject to server policy.
The server is responsible for determining whether a request to set
or clear the attribute is permitted. This may depend on factors
such as administrative configuration, export policy, or access
control mechanisms.</t>
      <t>One possible deployment model is for a server or administrator to
configure a mount (see <xref target="MOUNT"/>) option such that newly created
files under a given export are marked as uncacheable file data. In
such a configuration, a client may use SETATTR to set the
fattr4_uncacheable_file_data attribute at file creation time.</t>
      <t>This approach is conceptually similar in intent to the Solaris
forcedirectio mount option (see <xref target="SOLARIS-FORCEDIRECTIO"/>), but
differs in scope and visibility in that it allows DIRECT-I/O-like
behavior to be applied without requiring changes to individual
applications.</t>
      <t>Unlike local mechanisms such as forcedirectio, the NFSv4.2 attribute
is visible to all clients accessing the file and is intended to
convey server-side knowledge or policy in a distributed environment.</t>
    </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 file data attribute and a prototype Linux client which
treats the attribute as an indication to use O_DIRECT-like behavior
for file access and to revalidate file-associated metadata before
exposing cached state.</t>
      <t>For the prototype, all files created under the mount
point have the fattr4_uncacheable_file_data set to be true.</t>
      <t>Experience with the prototype indicates that the uncacheable file
data attribute can provide many of the practical benefits of O_DIRECT
without requiring application modification. For applications that
issue well-formed I/O requests, this approach has been observed to
improve performance in many cases, while also reducing memory
pressure and CPU utilization in the NFS client.</t>
    </section>
    <section anchor="xdr-for-uncacheable-attribute">
      <name>XDR for Uncacheable Attribute</name>
      <sourcecode type="xdr"><![CDATA[
///
/// typedef bool            fattr4_uncacheable_file_data;
///
/// const FATTR4_UNCACHEABLE_FILE_DATA       = 87;
///
]]></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 file 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[
<CODE BEGINS>
#!/bin/sh
grep '^ *///' $* | sed 's?^ */// ??' | sed 's?^ *///$??'
<CODE ENDS>
]]></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[
<CODE BEGINS>
sh extract.sh < spec.txt > uncacheable_prot.x
<CODE ENDS>
]]></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>The uncacheable file data attribute does not introduce new
authentication or authorization mechanisms and does not alter
existing NFSv4.2 access control semantics. All operations that set
or clear the attribute are subject to existing access control and
server policy.</t>
      <t>In particular, a server <bcp14>MUST</bcp14> enforce appropriate authorization
checks for SETATTR operations that modify the fattr4_uncacheable_file_data
attribute. The ability to set or clear the attribute may be restricted
based on administrative configuration, export policy, or other
server-defined criteria.</t>
      <t>Because the attribute is visible to and may affect the behavior of
multiple clients, servers should consider the implications of
allowing unprivileged users to modify it. Inappropriate use of the
attribute could impact performance or data access patterns for other
clients accessing the same file.</t>
      <t>The uncacheable file data attribute is advisory and does not provide
a security boundary. Clients <bcp14>MUST NOT</bcp14> rely on the presence or absence
of this attribute to make access control decisions.</t>
      <t>Use of this attribute does not replace or modify existing cache
consistency mechanisms or data integrity protections provided by
NFSv4.2.</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="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="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="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>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.haynes-nfsv4-flexfiles-v2">
          <front>
            <title>Parallel NFS (pNFS) Flexible File Layout Version 2</title>
            <author fullname="Thomas Haynes" initials="T." surname="Haynes">
              <organization>Hammerspace</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   Parallel NFS (pNFS) allows a separation between the metadata (onto a
   metadata server) and data (onto a storage device) for a file.  The
   Flexible File Layout Type Version 2 is defined in this document as an
   extension to pNFS that allows the use of storage devices that require
   only a limited degree of interaction with the metadata server and use
   already-existing protocols.  Data protection is also added to provide
   integrity.  Both Client-side mirroring and the Erasure Coding
   algorithms are used for data protection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-haynes-nfsv4-flexfiles-v2-02"/>
        </reference>
        <reference anchor="MOUNT" target="https://man7.org/linux/man-pages/man2/mount.2.html">
          <front>
            <title>mount(2) - mount filesystem</title>
            <author>
              <organization>Linux man-pages project</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Linux" value="Programmer's Manual"/>
        </reference>
        <reference anchor="OPEN-O_DIRECT" target="https://man7.org/linux/man-pages/man2/open.2.html">
          <front>
            <title>open(2) - Linux system call for opening files (O_DIRECT)</title>
            <author>
              <organization>Linux man-pages project</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SOLARIS-FORCEDIRECTIO" target="https://docs.oracle.com/en/operating-systems/solaris/oracle-solaris/11.4/manage-nfs/mount-options-for-nfs-file-systems.html">
          <front>
            <title>mount -o forcedirectio - Solaris forcedirectio mount option</title>
            <author>
              <organization>Oracle Solaris Documentation</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="Solaris" value="Administration Guide"/>
        </reference>
      </references>
    </references>
    <?line 405?>

<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, Brian Pawlowski, and Gorry Fairhurst helped guide
this process.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
