[nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-uncacheable-directories-10.txt
Rick Macklem <rick.macklem@gmail.com> Wed, 02 September 2026 20:58 UTC
Return-Path: <rick.macklem@gmail.com>
X-Original-To: nfsv4@mail2.ietf.org
Delivered-To: nfsv4@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 2EE481343A75F for <nfsv4@mail2.ietf.org>; Wed, 2 Sep 2026 13:58:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1788382685; bh=FteR+lL8yC8L8kBnsvpkyowY/a7LdoZV5Nex125XQY0=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=qC3cfH5rWNlF7V1UzlFr33xVq4SKLNOp87ssm/HVh8bqydI/hUKk7qGxnrWFyLcXt 0b2YUt0x37nCvYviO0b7ZJlGJUhdsE+M6+J3YtslAvzkBfbx7A+bI4D8cE/Yec+3Gv ECLEt3M31YFN6BBQ6RPmPy1SoSNrdHZ4jnec/KJ4=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8h_PCnvk6vM6 for <nfsv4@mail2.ietf.org>; Wed, 2 Sep 2026 13:58:04 -0700 (PDT)
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id A5DE21343A757 for <nfsv4@ietf.org>; Wed, 2 Sep 2026 13:58:04 -0700 (PDT)
Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-6a0c8283146so2706058a12.0 for <nfsv4@ietf.org>; Wed, 02 Sep 2026 13:58:04 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1788382678; cv=none; d=google.com; s=arc-20260327; b=jXXRtQWFhiU6WLxc9XKzUjbcDPUBGFDUiLvKH2h23QeW+/4y9xRUUdRT+q6M6McPJh 0gF3eDnNV6uI1Ra/nXzKjNU732iuK9uhOHco1KiFO/8rGzW6frEpR8+eSZP18qBs7N7M W68XNR/xt1X7lgj9T579E7m1MOoOFdfzM9Zo9aNdhyBKrPReT9n+If8BpUT/rkIg5h0J KbL28HWXGdUBLhkJm/0wZ7l9uA7NpqlqxY4DCa0eBovlrX5KS6dgeGxipZ9xP37V7b22 vsHE+t8y+ZeyDRSm/S7buoiC3f3fCfz3KWVNZxT6dNmrBZPM2s19WCNC4E7aWqJv96Ne /sow==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=1AXyLzEzHxr3sd4LIHp8utqDS7Iru1/W14ipw3PLkHU=; fh=r6sBbWeZC4/8o6HD4zX+HhFKwxPt4/fpTedkWlSJ72Y=; b=ga+j6CHvVc6XYbuigLmJ2syhW/p8C8zeZ2uE7FH+I85otV614rSjdOFMMuNW1uutNG pBIN0MZkhgTMr1z2TBOnL0GweLkqD52RepbiK4fX8SnRoVBSuWztKiD8W88w7u8rj8Gk 5LaofoMSt4u0CIyIz7sUkkakhIEAxm04lGYdZHLeF95QGDg8Nhsaa70xk/DZNKBaA2KU aRxfD/lNGoif5A3pFExGyYrskU8v0j3Dss2i1uPCdWEH+xgB/Anlnw87pp489eMavcjz AXg/TePCh14UsNsqpyV5n9v62lv/WxBbmv9Hq7iNhpLNF36lpKFM4r83vCvVd4EMzUNn tdfg==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788382678; x=1788987478; darn=ietf.org; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:from:to:cc:subject :date:message-id:reply-to:content-type; bh=1AXyLzEzHxr3sd4LIHp8utqDS7Iru1/W14ipw3PLkHU=; b=FU77fU2Zzm1fmmuv/ra1SmQqzeLPCvo1xEWzfKuvc2l/3+homnYUyLcwZp7zjVXIKQ O9fr3E6B5pfxZpFLqa2ocqufD5IoUBNaWhIU+J6wETtiL7oiQ9T8NxUkgNwlgVxhXKzZ jO2ERZU61Yu9WSb0EshrYtWMpBsz9PhC1bvaHq7tN17YMVKZ58TqmUXt85d1W0OUU2ME GK1OSNONKiyf6tinTLJoRj4vRZdhM9yRAZKE+Wg5AR0E/iqB7Fx2TT21SUCLPR1g5Fld e05n4cobEhamg/dOAC34cpcg9ubh2uZ2K93L/4qU8ftVmg/LMM3RXxqBvGEKyPL94KX4 fs+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788382678; x=1788987478; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=1AXyLzEzHxr3sd4LIHp8utqDS7Iru1/W14ipw3PLkHU=; b=grolD2LK9ywdJBAWQlSALhuGPC833z70gMGxeb9QO5xK2RknGxvid6B/elkhn++WC6 rS+87nwaMSge/+SJtt73luBziDcJE1dGkt6robHixlsG0LdRMsrbbiukD7+Kezf5hmdc UXx3/VQVTW/iXyyhROvhZ74C6XeKS1KPPbJPLMaFDbgOE/zNAXCpaZt2ovP/mZ7NKhv/ JvSxm5tGLvi/JQYBN9PKxOm2uUGnfrTKTduvdIN2NQCb5DfMX6ybwkut9+Nw867Vv9V1 K6lxtILre2eEaK07xA/3lFVdqB9nAZIQcpmWDTGlf3BaiLhaO0rT2ui/cvZO3MDqC/0t wtFg==
X-Forwarded-Encrypted: i=1; AKwUvBxMZm9i/eNDnnt1NksRqvV8I0BXwPRooBzO+dyuBjWD/jP5lGxkhbbvOjoN8TpdGv0BBdsUfQ==@ietf.org
X-Gm-Message-State: AFuF++np2VIZ+U2eQY/m1bvhx5H5YnF84MHFuMn1HDQ0OQBDnoIdfZsq uEwDoyo/ETAk+0WoSD8yUP2+QX1yIPQUuogse1UswB6cD3yOuy+gkVXWXGHLqmG+AwtyQ8rQBaF 9wH/idNStgm2TMXqfWOgQdFHskWOqZQ==
X-Gm-Gg: AYBFou0jzonYfi2LBxtsF3PrlGATfVgG9Q7jlT6IuvAN1A8DqtYlktS1boSYx/LISXb xPumoddo9oWF7NOM1j+cIW/mkz/oukROq1UhXequ3GEokzU3lXmD/YK4tyFwajTjVF7A1YA1I5H msKNu5aa7jwyHuzexCotNvgsOA2uQbCaerXK5wkes5tPkyUZvMIuzICFOzZyjrv5uCaKe5ATzKF oXRBH0dem59n+HGOFGE8isA9CBUt6/3a93WTgVtwBW+jtU69JX4Xee+F6GXz6HbJD5ygzY9So9A XFlh3TUW5uHC0eEK3Z565x8XXNvc3ifu5gWBCNGSnmsihrpkb3mFIjyo/RVFG1vKXxioRdtR8dz f
X-Received: by 2002:a05:6402:2552:b0:6a6:c4b:c92f with SMTP id 4fb4d7f45d1cf-6a682550fb0mr4380860a12.9.1788382677992; Wed, 02 Sep 2026 13:57:57 -0700 (PDT)
MIME-Version: 1.0
References: <defc3208f86c4bf20dc7a4a873b0d99fe5d211c4.camel@poochiereds.net> <apb23uHgNRqXwFQz@mana> <27524057633661535f113f7e9bd181e384bdd509.camel@poochiereds.net> <aphDi5YcU8atF0TA@mana> <f98c0f11-d357-43ce-8ae9-0de12d73af50@app.fastmail.com> <apheMhQ2PFS5uDUF@mana> <6c2e1a9c-3514-4ed4-8327-b9312c511a95@app.fastmail.com>
In-Reply-To: <6c2e1a9c-3514-4ed4-8327-b9312c511a95@app.fastmail.com>
From: Rick Macklem <rick.macklem@gmail.com>
Date: Wed, 02 Sep 2026 13:57:46 -0700
X-Gm-Features: AcwNN1U05bVnIHtEWY4CPsd1Q65aWa8smfWOAbmxBihSfdu7G5b-o9f3Nm_yoL8
Message-ID: <CAM5tNy5-YmkeRV++3N2NqG7ngWuQG90TqSHyE1s2pAdPJOGq7Q@mail.gmail.com>
To: Chuck Lever <cel-ietf@chucklever.net>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Message-ID-Hash: V6GLWMDTJZRELONQ26JY2IN5JDP6T3PR
X-Message-ID-Hash: V6GLWMDTJZRELONQ26JY2IN5JDP6T3PR
X-MailFrom: rick.macklem@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-nfsv4.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: nfsv4@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-uncacheable-directories-10.txt
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/JdM76wwM_SBVP4PMWunQuaovCxY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Owner: <mailto:nfsv4-owner@ietf.org>
List-Post: <mailto:nfsv4@ietf.org>
List-Subscribe: <mailto:nfsv4-join@ietf.org>
List-Unsubscribe: <mailto:nfsv4-leave@ietf.org>
I've just chosen the last email in the thread. I am not commenting
specifically about Chunk's comments..
I'll assume that you have a directory where many of the file's are
being modified
(such that mtime, size, change are changing). This is where I think
this attribute
is useful. (If not, ignore the rest of this post, because I do not
understand the goal.;-)
First, related to Jeff's comments w.r.t. "Why not just have Readdir ask for
the "uncachable file" attribute and use that".
-> To me, the problem with this is performance/efficiency related.
Suppose a client does a Readdir op. asking for (uncachable_file +
size, mtime, change..).
--> The server has to return (size, mtime, change..) although they are
relatively useless
to the client if they cannot be cached. This is an inconvenience
for the client, but could
be a large performance hit for the server, if it is a ffv1 pNFS
server, for example.
Now, wearing my FreeBSD client implementer hat..
For NFSv3, there are Readdir and ReaddirPlus RPCs.
The client uses the latter to acquire attributes that it can use to
prime caches.
For NFSv4, the FreeBSD client does roughly the same, using two different
compounds.
Since, the attributes beyond (fileno and type) are not needed to create POSIX
"struct dirent" entries, the only reason to do a ReaddirPlus compound is to
prime caches.
Bottom line. As I see it, this attribute makes a "strong hint" to the FreeBSD
NFSv4 client to use the Readdir compound instead of the ReaddirPlus one.
--> Simple. What am I missing here?
If my assumption of how it is used in the client is correct, then all you need
is a simple description of it.
--> I already suggested describing it as a "strong hint" of what
attributes should
be requested for a Readdir. I know Tom didn't want to enumerate them, but
if that really is a problem, you can define the attribute as an
attribute bitmap
instead of just a boolean.
rick
On Wed, Sep 2, 2026 at 12:27 PM Chuck Lever <cel-ietf@chucklever.net> wrote:
>
> On Wed, Sep 2, 2026, at 1:55 PM, Thomas Haynes wrote:
> > Agreed on ownership -- see the definition below. One correction,
> > though: fattr4_uncacheable_file_data does not control that cache.
> > draft-ietf-nfsv4-uncacheable-files governs the data cache --
> > write-behind and read caching, its Section 4 -- and says nothing
> > about the attribute cache.
>
> Fair enough. I conflated the two drafts' targets. But this leaves
> us with neither attribute, as written, governing the cache where
> these attributes actually live.
>
>
> > It refers to the attrs field -- the fattr4 in your entry4 above.
> > Not the cookie, not the name.
> >
> > The fattr4 belongs to the object the entry refers to, not to the
> > parent. That is stated in the definition, not just implied:
>
> The remaining problem is that the normative requirement has nothing
> to attach to in real NFS clients. Section 5 makes three commitments:
>
> 1. "the client MUST retrieve dirent metadata from the server on each
> READDIR rather than serving the response from a local cache"
>
> 2. "an honoring client may continue to cache the dirents themselves,
> validated by the directory's change attribute as it would be for
> any other directory, and refetch only their metadata"
>
> 3. The attribute does NOT govern "[t]he client's per-file attribute
> cache for individual children of the directory, populated by
> direct GETATTR"
>
> No client I know of keeps READDIR-returned fattr4s separate from
> fattr4s returned by GETATTR. READDIR-returned fattr4s only purpose
> is to prime the same per-file attribute cache that GETATTR replies
> land in. And applications in user space *never* *observe* READDIR
> attributes at all; they observe stat(2), served from that unified
> cache.
>
> Now run an honoring client through the three commitments:
>
> - It serves readdir(3) from cached dirent pages, validated by the
> parent's change attribute, per (2). Writes to a child do not move
> the parent's change attribute, so that cache stays valid.
>
> - No READDIR goes on the wire, so the MUST in (1), scoped to "each
> READDIR", imposes nothing.
>
> - Every attribute the application sees comes from the per-file
> attribute cache, which (3) says this attribute does not govern.
>
> Fully compliant, and every stat(2) result stale. The escape hatch in
> (2), "refetch only their metadata", has no operation to ride on:
> without a READDIR, refetching a child's metadata is a GETATTR, and
> its result lands in the cache that (3) carves out. The "externally
> visible behavior is equivalent" clause does not rescue it either:
> equivalence is measured against (1), and (1) as scoped requires
> nothing.
>
> Meanwhile a client that does what the Section 2 deployments need --
> treat its cached attributes for the directory's entries as invalid
> each time an application enumerates the directory -- is implementing
> behavior that Section 5 explicitly places outside the attribute's
> scope.
>
> The intended behavior is implementable and cheap. The stated
> requirement is not, because it attaches to a cache no client has
> and disclaims the one they all have. Here's a potential restatement
> of the normative text:
>
> When the attribute is set on a directory and the client honors
> it, the client MUST treat any file attributes it holds for the
> directory's entries as invalid at the time it performs each
> enumeration of the directory, regardless of which operation
> populated them. Attributes obtained for an individual entry at
> other times remain governed by the attribute caching rules of
> [RFC8881] Section 10.6.
>
> The second sentence is what the current per-file-cache bullet is
> trying to say. The first is what the MUST needs to say for a
> unified-cache client to have anything to implement.
>
> Note that I'm not advocating for this replacement, necessarily,
> since I'm not convinced that this restatement makes a client
> behave the way you actually intend it to. It only makes the draft
> implementable on the current cohort of conventional POSIX-based
> clients.
>
>
> --
> Chuck Lever (author, nfsv4 co-chair)
>
> _______________________________________________
> nfsv4 mailing list -- nfsv4@ietf.org
> To unsubscribe send an email to nfsv4-leave@ietf.org
- [nfsv4] non-WGLC review of draft-ietf-nfsv4-uncac… Jeff Layton
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Thomas Haynes
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Jeff Layton
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Thomas Haynes
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Chuck Lever
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Thomas Haynes
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Chuck Lever
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Rick Macklem
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Thomas Haynes
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Jeff Layton
- [nfsv4] Re: non-WGLC review of draft-ietf-nfsv4-u… Jeff Layton