Linux 7.2 To Better Communicate File-System Casefolding For Helping Windows NFS & More
Newly-merged code for the in-development Linux 7.2 kernel will now expose the case-folding (case insensitive) behavior of local file-systems so that Linux file servers and others can properly report the actual behavior rather than guessing if case-folding is actually used/supported.
Linus Torvalds today merged many of the VFS related pull requests for Linux 7.2. Among the notable VFS material is now being able to nicely report case-folding behavior of local file-systems for the likes of NFSD, KSMBD, and user-space servers. The motivating factor in getting this functionality in place via new file_kattr flags is for addressing the needs of Microsoft Windows NFS clients.
Christian Brauner explained of this case-folding work for Linux 7.2:
This pull is now merged for all this work around case sensitivity reporting.
Linus Torvalds today merged many of the VFS related pull requests for Linux 7.2. Among the notable VFS material is now being able to nicely report case-folding behavior of local file-systems for the likes of NFSD, KSMBD, and user-space servers. The motivating factor in getting this functionality in place via new file_kattr flags is for addressing the needs of Microsoft Windows NFS clients.
Christian Brauner explained of this case-folding work for Linux 7.2:
"This exposes the case folding behavior of local filesystems so that file servers - nfsd, ksmbd, and user space file servers - can report the actual behavior to clients instead of guessing.
Filesystems report case-insensitive and case-nonpreserving behavior via new file_kattr flags in their fileattr_get implementations. fat, exfat, ntfs3, hfs, hfsplus, xfs, cifs, nfs, vboxsf, and isofs are wired up; local filesystems not explicitly handled default to the usual POSIX behavior of case-sensitive and case-preserving. nfsd uses this to report case folding via NFSv3 PATHCONF and to implement the NFSv4 FATTR4_CASE_INSENSITIVE and FATTR4_CASE_PRESERVING attributes - both have been part of the NFS protocols for decades to support clients on non-POSIX systems - and ksmbd reports it via FS_ATTRIBUTE_INFORMATION. Exposing the information through the fileattr uapi covers user space file servers.
The immediate motivation is interoperability: Windows NFS clients hard-require servers to report case-insensitivity for Win32 applications to work correctly, and a client that knows the server is case-insensitive can avoid issuing multiple LOOKUP/READDIR requests searching for case variants. The Linux NFS client already grew support for case-insensitive shares years ago in support of the Hammerspace NFS server - negative dentry caching must be disabled (a lookup for "FILE.TXT" failing must not cache a negative entry when "file.txt" exists) and directory change invalidation must drop cached case-folded name variants. Such servers often operate in multi-protocol environments where a single file service instance caters to both NFS and SMB clients, and nfsd needs to report case folding properly to participate as a first-class citizen there."
This pull is now merged for all this work around case sensitivity reporting.
