<?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-13" 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-13"/>
    <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 54?>

<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>
    <note>
      <name>Note to Readers</name>
      <?line 68?>

<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 79?>

<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 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.  The
attribute itself is specified in <xref target="sec_attribute"/> and the client
behavior it advises in <xref target="sec_caching"/>.</t>
      <t>Using the process described in <xref target="RFC8178"/> Section 6, this document
extends NFSv4.2 <xref target="RFC7862"/>; as that section provides, it does not
update <xref target="RFC7862"/>, which remains a valid description of the base
variant of the minor version.  The revisions are built on top of the
external data representation (XDR) <xref target="RFC4506"/> generated from
<xref target="RFC7863"/>.</t>
    </section>
    <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.</t>
        </dd>
        <dt>revalidation</dt>
        <dd>
          <t>The procedure of <xref target="RFC8881"/> Section 10.3.1 by which a client
determines whether data or attributes it holds in a cache are still
current: the client fetches the change attribute from the server,
compares it with the value it cached, and, if they differ, treats
the cached data and attributes as invalid.  A client validates data
when it fetches it from the server; it revalidates before reusing
what it cached.</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 anchor="sec_attribute">
      <name>The Uncacheable File Data Attribute</name>
      <t>The uncacheable file data attribute, fattr4_uncacheable_file_data
(see <xref target="sec_xdr"/>), is a <bcp14>RECOMMENDED</bcp14> attribute for NFSv4.2, in the
attribute-category sense of <xref target="RFC8881"/> Section 5.2 and <xref target="RFC7862"/>
Section 12 rather than the BCP 14 sense; a server is not required to
support it.  It is read-write, applies on a per-file basis, and has a
data type of boolean.  <xref target="tab_attr"/> summarizes the attribute using
the columns of <xref target="RFC7862"/> Section 12.1, where "R W" indicates that
GETATTR may retrieve the attribute and SETATTR may set it.</t>
      <table anchor="tab_attr">
        <name>New RECOMMENDED Attribute</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Id</th>
            <th align="left">Data Type</th>
            <th align="left">Acc</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">uncacheable_file_data</td>
            <td align="left">87</td>
            <td align="left">bool</td>
            <td align="left">R W</td>
          </tr>
        </tbody>
      </table>
      <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 examining the supported_attrs attribute
for that file's filesystem or by probing support using the procedures
described in <xref target="RFC8178"/>.</t>
      <t>The uncacheable file data attribute applies only to regular files,
that is, objects of type NF4REG or NF4NAMEDATTR (<xref target="RFC7862"/> Section
6.1).  A named attribute is read and written with the same READ and
WRITE operations as a regular file (<xref target="RFC8881"/> Section 5.3), so a
client caches its data by the same mechanism and is exposed to the
same hazards.  A server that receives a GETATTR requesting this
attribute for an object that is not a regular file <bcp14>MUST</bcp14> return FALSE: support
for an attribute is advertised per file system (<xref target="RFC8881"/> Section
5.8.1.1), so a server that supports this attribute supports it for
every object in that file system and owes a value for each
(<xref target="RFC8881"/> Section 18.7.3).  As with rawdev (<xref target="RFC8881"/> Section
5.8.2.31), the value <bcp14>SHOULD NOT</bcp14> be considered useful for such an
object.  A server that receives a SETATTR requesting this attribute on
an object that is not a regular file <bcp14>MUST</bcp14> return NFS4ERR_WRONG_TYPE
(<xref target="RFC8881"/> Section 15.1.2.9).</t>
    </section>
    <section anchor="sec_caching">
      <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 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>MUST NOT</bcp14>
delay transmission of WRITE data for the purpose of combining
multiple WRITE operations or improving efficiency.</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="write-durability">
        <name>WRITE Durability</name>
        <t>The uncacheable file data attribute does not, by itself, dictate
the <tt>stable_how</tt> value a client uses on WRITE operations.  The
protocol-level requirement is the following durability invariant:
when the application's write call returns successfully, the WRITE
data <bcp14>MUST</bcp14> be durable on the server.</t>
        <t>A client honoring the uncacheable file data attribute <bcp14>MAY</bcp14> satisfy
this invariant by either:</t>
        <ul spacing="normal">
          <li>
            <t>issuing WRITEs with <tt>stable_how</tt> of FILE_SYNC4 or DATA_SYNC4, in
which case the data is durable on the WRITE response, or</t>
          </li>
          <li>
            <t>issuing WRITEs with <tt>stable_how</tt> of UNSTABLE4 and a COMMIT that
completes before the application's write call returns.  If the
COMMIT response indicates a changed write verifier, the client
<bcp14>MUST</bcp14> re-issue the affected WRITEs from the application's buffer,
which remains available for the duration of the write call.</t>
          </li>
        </ul>
        <t>Clients <bcp14>MUST NOT</bcp14> defer COMMIT past the point at which the
application's write call returns, because no client-side copy of
the WRITE data is retained beyond that point and the data could
not otherwise be re-driven after a server reboot.</t>
        <t>The transient retention of WRITE data needed to complete an
in-flight UNSTABLE4 and COMMIT exchange is not considered "caching"
for the purposes of this attribute.  The attribute concerns the
long-lived retention of file data for the purpose of satisfying
future READs or combining future WRITEs.</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 revalidating it.</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. Meeting this <bcp14>MUST</bcp14>
requirement satisfies the general <bcp14>SHOULD</bcp14> obligation above.</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 when another NFSv4.2 mechanism ensures a
consistent view of the file, such as a delegation.</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>In some deployments, applications or administrative tools may request
that the uncacheable file data 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>Requests that are not permitted <bcp14>MUST</bcp14> be rejected using existing
NFSv4 error codes (e.g., NFS4ERR_INVAL or NFS4ERR_PERM).</t>
      <t>This document does not require a server to implement any particular
policy, nor any particular means of configuring one.  A server that
always permits, or always refuses, requests to set or clear the
attribute conforms to this document; what the protocol requires is
only the error returned when a request is refused.</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 request setting of the attribute
at file creation time, via the createattrs of OPEN.</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>
      <t>Changes to the uncacheable file data attribute while a file is
actively in use may not be immediately reflected in client behavior.
A client that has already opened a file <bcp14>MAY</bcp14> continue to operate
based on its existing caching behavior and is not required to
immediately alter its behavior in response to a change in the
attribute.</t>
      <t>Clients are expected to observe attribute changes through normal
NFSv4 mechanisms (e.g., GETATTR or revalidation) and apply updated
behavior as appropriate for subsequent operations.</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.</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="sec_xdr">
      <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 <bcp14>SHOULD</bcp14> 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="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="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 477?>

<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, Barry Leiba, Vijay Gurbani,
Claudio Allocchio, and Jamie Koehl reviewed the document.</t>
      <t>Chris Inacio, Chuck Lever, Brian Pawlowski, and Gorry Fairhurst
helped guide this process.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
nYxZS4kB/xeS+lbUa00AAA==

-->

</rfc>
