From: "Chuck Lever" <cel@kernel.org>
To: "Theodore Tso" <tytso@mit.edu>
Cc: "Eric Biggers" <ebiggers@kernel.org>,
"Alexander Viro" <viro@zeniv.linux.org.uk>,
"Christian Brauner" <brauner@kernel.org>,
linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org,
hirofumi@mail.parknet.co.jp,
almaz.alexandrovich@paragon-software.com,
adilger.kernel@dilger.ca, Volker.Lendecke@sernet.de,
"Chuck Lever" <chuck.lever@oracle.com>
Subject: Re: [PATCH v2 1/6] fs: Add case sensitivity info to file_kattr
Date: Fri, 12 Dec 2025 10:08:18 -0500 [thread overview]
Message-ID: <ed9d790a-fea8-4f3e-8118-d3a59d31107b@app.fastmail.com> (raw)
In-Reply-To: <20251212021834.GB65406@macsyma.local>
On Thu, Dec 11, 2025, at 9:18 PM, Theodore Tso wrote:
> On Thu, Dec 11, 2025 at 08:16:45PM -0500, Chuck Lever wrote:
>>
>> > I see you're proposing that ext4, fat, and ntfs3 all set
>> > FILEATTR_CASEFOLD_UNICODE, at least in some cases.
>> >
>> > That seems odd, since they don't do the matching the same way.
>>
>> The purpose of this series is to design the VFS infrastructure. Exactly what
>> it reports is up to folks who actually understand i18n.
>
> Do we know who would be receiving this information and what their needs
> might be?
The unicode v. ascii case folding information was included just as
an example. I don't have any use case for that, and as I told Eric,
those specifics can be removed from the API.
The case-insensitivity and case-preserving booleans can be consumed
immediately by NFSD. These two booleans have been part of the NFSv3
and NFSv4 protocols for decades, in order to support NFS clients on
non-POSIX systems.
I'm told that Samba has to detect and expose file system case folding
behavior to its clients as well. Supporting Samba and other user
space file servers is why this series exposes case folding information
via a local user-space API. I don't know of any other category of
user-space application that requires access to case folding info.
The Linux NFS community has a growing interest in supporting NFS
clients on Windows and MacOS platforms, where file name behavior does
not align with traditional POSIX semantics.
One example of a Windows-based NFS client is [1]. This client
implementation explicitly requires servers to report
FATTR4_WORD0_CASE_INSENSITIVE = TRUE for proper operation, a hard
requirement for Windows client interoperability because Windows
applications expect case-insensitive behavior. When an NFS client
knows the server is case-insensitive, it can avoid issuing multiple
LOOKUP/READDIR requests to search for case variants, and applications
like Win32 programs work correctly without manual workarounds or
code changes.
Even the Linux client can take advantage of this information. Trond
merged patches 4 years ago [2] that introduce support for case
insensitivity, in support of the Hammerspace NFS server. In
particular, when a client detects a case-insensitive NFS share,
negative dentry caching must be disabled (a lookup for "FILE.TXT"
failing shouldn't cache a negative entry when "file.txt" exists)
and directory change invalidation must clear all cached case-folded
file name variants.
Hammerspace servers and several other NFS server implementations
operate in multi-protocol environments, where a single file service
instance caters to both NFS and SMB clients. In those cases, things
work more smoothly for everyone when the NFS client can see and adapt
to the case folding behavior that SMB users rely on and expect. NFSD
needs to support the case-insensitivity and case-preserving booleans
properly in order to participate as a first-class citizen in such
environments.
As a side note: I assumed these details were already well-known in
this community; otherwise I would have included it in the series
cover letter. I can include it when posting subsequent revisions.
--
Chuck Lever
[1] https://github.com/kofemann/ms-nfs41-client
[2] https://patchwork.kernel.org/project/linux-nfs/cover/20211217203658.439352-1-trondmy@kernel.org/
next prev parent reply other threads:[~2025-12-12 15:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-11 15:21 [PATCH v2 0/6] Exposing case folding behavior Chuck Lever
2025-12-11 15:21 ` [PATCH v2 1/6] fs: Add case sensitivity info to file_kattr Chuck Lever
2025-12-11 23:41 ` Eric Biggers
2025-12-12 1:16 ` Chuck Lever
2025-12-12 2:18 ` Theodore Tso
2025-12-12 15:08 ` Chuck Lever [this message]
2025-12-12 21:23 ` Theodore Tso
2025-12-12 22:49 ` Trond Myklebust
2025-12-13 16:43 ` Chuck Lever
2025-12-15 12:37 ` Christian Brauner
2025-12-11 15:21 ` [PATCH v2 2/6] fat: Implement fileattr_get for case sensitivity Chuck Lever
2025-12-12 4:42 ` OGAWA Hirofumi
2025-12-11 15:21 ` [PATCH v2 3/6] ntfs3: " Chuck Lever
2025-12-11 15:21 ` [PATCH v2 4/6] ext4: Report case sensitivity in fileattr_get Chuck Lever
2025-12-11 15:21 ` [PATCH v2 5/6] nfsd: Report export case-folding via NFSv3 PATHCONF Chuck Lever
2025-12-11 15:21 ` [PATCH v2 6/6] nfsd: Implement NFSv4 FATTR4_CASE_INSENSITIVE and FATTR4_CASE_PRESERVING Chuck Lever
2025-12-12 5:20 ` [PATCH v2 0/6] Exposing case folding behavior Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ed9d790a-fea8-4f3e-8118-d3a59d31107b@app.fastmail.com \
--to=cel@kernel.org \
--cc=Volker.Lendecke@sernet.de \
--cc=adilger.kernel@dilger.ca \
--cc=almaz.alexandrovich@paragon-software.com \
--cc=brauner@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=ebiggers@kernel.org \
--cc=hirofumi@mail.parknet.co.jp \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®