[nfsv4] Re: FATTR4_MIN_HOLE_SIZE, and sparse file minimum requirement RFC?

Thomas Haynes <loghyr@gmail.com> Mon, 02 March 2026 16:24 UTC

Return-Path: <loghyr@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 577EFC22CCF7 for <nfsv4@mail2.ietf.org>; Mon, 2 Mar 2026 08:24:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.098
X-Spam-Level:
X-Spam-Status: No, score=-1.098 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, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no 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 p2AMTOEF0b9n for <nfsv4@mail2.ietf.org>; Mon, 2 Mar 2026 08:24:01 -0800 (PST)
Received: from mail-dl1-x1231.google.com (mail-dl1-x1231.google.com [IPv6:2607:f8b0:4864:20::1231]) (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 A78A3C22CCEE for <nfsv4@ietf.org>; Mon, 2 Mar 2026 08:24:01 -0800 (PST)
Received: by mail-dl1-x1231.google.com with SMTP id a92af1059eb24-1270ac5d3efso4409107c88.1 for <nfsv4@ietf.org>; Mon, 02 Mar 2026 08:24:01 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772468641; x=1773073441; darn=ietf.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=ba+0paYP3L0LCb1tYtCMxhAEGkaOAieWz8p4JWsPjEg=; b=SknmwbS7i7vxO1JtyYZ+IRx4HBl5nMjyO2PDZPeVogqvn/gYVecnbDoc6/a97yRWKG /MU97IoA/6pXy/+/9mY6xB79amC9bZmwXcDmGehauvCpyHlyN+1f+pjq2xo3+OfSbkVT YDaqywq9vwrSRBuOL0ygBQVVX2jvn+OaMkQK+ZLjbFLj7Idv37yIdU/r+D4OJvx5w10I qaNUVa154xM7w+RLFKveXQrvZw4x0rlSVudOXRjQRxmDInCVvZ8EOAKhAiCo2cGo8cgt s4erscqimyy/VFMHvL4KsoRjCCq1gL9dwiLZC8LZD6/1BHt0S97MSoGrvgLTXA3gQy62 RZIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772468641; x=1773073441; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ba+0paYP3L0LCb1tYtCMxhAEGkaOAieWz8p4JWsPjEg=; b=bo4XXUjB9ueoAYW2lG3cnRoRkGn86JrZr8tYJh7jVZ1whj2jjZYJRTe+pfl1ciAWO3 d/2AH/EfX2eQ1lJv1I3ALJgFS5RWF5z3rMbj0I8GzOUdWPIp/erOWwfN2/AEv7y92XXu 2S4vo5Hg29U7leCeohJxHpHn3/lKKEfjGB/GYppMK+lLCt2lOAmFPBeffDLnCkH2dGhn K1lOf1Q92pVDox6kc0GVC7f96m86MRI9TiyUUCetQIO0lBJFnSvwkWXEJ0znOatQPN7R UrDmqym+tvgs94XT/UQ+dKbzuJQ/fsie+pDVLu5DBmaZNCO0aFWpInA1NG6c3sL/PaV2 psFQ==
X-Gm-Message-State: AOJu0YwMya7yqoWFDf8USKlAd4lcNvNhuQosTwIkM/dpm7OhTW/3qKjE ox9g/c6IXc0fINffbzgekRrG1EvP0mYJ7hWcHybsRlzWx4UbQ9QhII9v
X-Gm-Gg: ATEYQzxlHDoK3OyOJXd5/FA8D0Rfpp5gAIY4JNcgzb/yvLvAiQbNJz2C0WJ4tbbW+6w VZEHkZQlo1XOieZKniRx76iF+OW5EmuHKlQPWmT9hQC1tdTo7iTVUGElj5luqfmitX/6Mpe0NMy 1rsQYoUtHUuMQIIEBSO++LRkXzAqWUoizblsCU9W4r1TdDmeIflutDrd7gVDwOr0dzDCB8JIB8y B/s8n4gV8lm4a3FzIZzpvwSv/+OzkSe6Dw6PtzvjNKVzJ2caIqxebrwdN+qAenmjAxQJtWLUQfh Lxjd6eSy3/MQr1ETErZgpeWkHGcHXOBca//q6kPB1gksY/ZUQ8B9j/DOwjjyD8oSAO4B9b0ayWk xCW8ingNGe7igyY8s4YxW9Zu30tVbrfLZIpTL9Z/cKmDNf6vsZxDlM9owWEDXBWxgKzSf+bk06g i7EvpWvBT4qqhjEe1yikNovqhxPY/Fcmnz1+G2S1vpqF3v7xRTTA==
X-Received: by 2002:a05:7300:7308:b0:2bd:b4d6:d9b0 with SMTP id 5a478bee46e88-2bde16ab274mr4250784eec.0.1772468640134; Mon, 02 Mar 2026 08:24:00 -0800 (PST)
Received: from smtpclient.apple ([2600:1700:8490:2ff0:146f:33d7:cc36:a69]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be0c63482csm4108635eec.4.2026.03.02.08.23.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Mar 2026 08:23:59 -0800 (PST)
From: Thomas Haynes <loghyr@gmail.com>
Message-Id: <2AF95C2E-49D4-48ED-BB06-2D63964F95C7@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_9E04ED9E-36DD-4904-BDD7-07F8119A6291"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.400.21\))
Date: Mon, 02 Mar 2026 08:23:48 -0800
In-Reply-To: <CALXu0Uc_cyKzj0R3xzfBnddKdGgY7mPzDFQVBEJ7MjYuKWpwOw@mail.gmail.com>
To: Cedric Blancher <cedric.blancher@gmail.com>
References: <CALXu0Ue0xCpGX=hvjt+oPpj=An29xv_y0-P9-OTXCn5RxRyRQg@mail.gmail.com> <CADaq8jd-1-mzs2QRYVzBbyEMWuTVXb2=XSF7q7Y6EJj_j8L22A@mail.gmail.com> <D24B786C-D178-4C6D-B1BD-BF3356DD5D37@gmail.com> <CALXu0Uc_cyKzj0R3xzfBnddKdGgY7mPzDFQVBEJ7MjYuKWpwOw@mail.gmail.com>
X-Mailer: Apple Mail (2.3864.400.21)
Message-ID-Hash: EKWZBGTNNLMQKDPEF4QOLER6YZLE4HB5
X-Message-ID-Hash: EKWZBGTNNLMQKDPEF4QOLER6YZLE4HB5
X-MailFrom: loghyr@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 <nfsv4@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [nfsv4] Re: FATTR4_MIN_HOLE_SIZE, and sparse file minimum requirement RFC?
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/cu0nSpzh3fe5tZefeDoVKVtKXNA>
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>


> On Mar 2, 2026, at 1:11 AM, Cedric Blancher <cedric.blancher@gmail.com> wrote:
> 
> On Sun, 1 Mar 2026 at 17:40, Thomas Haynes <loghyr@gmail.com <mailto:loghyr@gmail.com>> wrote:
>> 
>> 
>> 
>> On Mar 1, 2026, at 4:04 AM, David Noveck <davenoveck@gmail.com> wrote:
>> 
>> 
>> 
>> On Sunday, March 1, 2026, Cedric Blancher <cedric.blancher@gmail.com> wrote:
>>> 
>>> Good morning!
>>> 
>>> 1. IMO it may be nice to get a per-fs FATTR4_MIN_HOLE_SIZE attribute
>>> to provide a byte-size value for pathconf() _PC_MIN_HOLE_SIZE, .
>> 
>> 
>> Probably,  but if you think we need one, aa I suspect you do, you will have to at least propose that we do that and may have to do more.
> 
> First I wanted feedback, and then I'll do a proposal.
> 
>> 
>>> to
>>> define the "minimum hole size" for sparse files.
>> 
>> 
>> I don't know much about sparse file support  but I am not clear as to limits based on a brief scan of RFC7862.
> 
> https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap03.html
> 3.347ff, but I am mostly interested in two things:
> 1. Getting a proper value for _PC_MIN_HOLE_SIZE from the filesystem
> exported by the NFS server
> 2. Detecting early (before opening a file) whether the NFSv4.2
> extensions SEEK, ALLOCATE and DEALLOCATE are supported by the NFS
> server and can be implemented on that exported filesystem
> 
> [1] is often different from the default block size, typically smaller
> (sometimes by factor 8, e.g. 4096 byte block size --> 512 byte minhole
> size, or sometimes by factor 64; or sometimes much larger, say 128k
> for 4k block size)
> 
> Question is whether FATTR4_MIN_HOLE_SIZE MUST only be supported IF
> NFSv4.2 extensions SEEK, ALLOCATE and DEALLOCATE are available, or a
> separate attribute with a bitmap4 is used to set a bit or NFS4 op
> supported.
> 
>> 
>>> 
>>> 
>>> (this can be different
>>> from the (logical) block size).
>> 
>> 
>> OK.    But I'm  not clear about the concept of block size in  NFSv4.  RFC7862 uses BLOCK_SIZE but I couldn't find a definition of how this value was determined and used.  Was not in RFC8881 either.  What am I missing?
> 
> I thought NFSv4.x avoids setting a global "block size", as modern
> filesystems can use multiple block sizes, or the block size can change
> if the file is moved around in a HSM.

Take the use of the word BLOCK_SIZE as meaning the size of the blocks on a given filesystem. It has nothing to do with the protocol. It is used purely to illustrate an example.


> 
> FATTR4_MIN_HOLE_SIZE however is different, it does not implement
> "block size semantics", it only implements a hint for the minimum size
> of sparse file holes.
> 
>> And that is not possible in NFSv4.2 - there are existing implementations of NFSv.4.2 which support these operations and you cannot retroactively change the requirements on them.
> 
> We do not wish to change NFSv4.2, we want a small extension to map
> POSIX _PC_MIN_HOLE_SIZE, and maybe a solution to detect which NFS ops
> are supported for a given NFS server and exported filesystem.
> 

That does not match up with your repeated use of the word MUST.


> Ced
> -- 
> Cedric Blancher <cedric.blancher@gmail.com <mailto:cedric.blancher@gmail.com>>
> [https://plus.google.com/u/0/+CedricBlancher/]
> Institute Pasteur
> 
> _______________________________________________
> nfsv4 mailing list -- nfsv4@ietf.org <mailto:nfsv4@ietf.org>
> To unsubscribe send an email to nfsv4-leave@ietf.org <mailto:nfsv4-leave@ietf.org>