Tmpfs Adding Case Insensitive Support For Wine / Steam Play & Flatpaks
([Linux Storage] 4 Hours Ago
Tmpfs With Linux 6.13)
- Reference: 0001506047
- News link: https://www.phoronix.com/news/Linux-6.13-Tmpfs-Case-Folding
- Source link:
In addition to the [1]EXT4 and XFS atomic write support , another interesting pull request sent in today by Microsoft's Christian Brauner is adding case-insensitive file/folder support for the Tmpfs file-system to benefit use-cases like Wine / Steam Play compatibility layers and sandboxing/container facilities like Flatpak.
Following file-systems like [2]EXT4 and [3]F2FS that have supported optional case-insensitive file/folder support, the Tmpfs file-system is now seeing similar support. As with the other file-systems, the case insensitive lookup ability is being driven in part for enhancing compatibility layers like Wine and in turn Valve's Steam Play (Proton) for better dealing with Windows software that isn't always graceful around case sensitive file-systems.
With Tmpfs being a temporary file-system residing in RAM, there are some differences in handling compared to the case folding on EXT4 and F2FS. Christian Brauner explained in the [4]VFS Tmpfs pull request for Linux 6.13:
"This adds case-insensitive support for tmpfs.
The work contained in here adds support for case-insensitive file names lookups in tmpfs. The main difference from other casefold filesystems is that tmpfs has no information on disk, just on RAM, so we can't use mkfs to create a case-insensitive tmpfs. For this implementation, there's a mount option for casefolding. The rest of the patchset follows a similar approach as ext4 and f2fs.
The use case for this feature is similar to the use case for ext4, to better support compatibility layers (like Wine), particularly in combination with sandboxing/container tools (like Flatpak).
Those containerization tools can share a subset of the host filesystem with an application. In the container, the root directory and any parent directories required for a shared directory are on tmpfs, with the shared directories bind-mounted into the container's view of the filesystem.
If the host filesystem is using case-insensitive directories, then the application can do lookups inside those directories in a case-insensitive way, without this needing to be implemented in user-space. However, if the host is only sharing a subset of a case-insensitive directory with the application, then the parent directories of the mount point will be part of the container's root tmpfs. When the application tries to do case-insensitive lookups of those parent directories on a case-sensitive tmpfs, the lookup will fail."
[5]Linux 6.13 is shaping up to be another feature-heavy kernel cycle and will represent the first major Linux kernel update of 2025.
[1] https://www.phoronix.com/news/Linux-6.13-VFS-Untorn-Writes
[2] https://www.phoronix.com/news/EXT4-Case-Insensitive-Linux-5.2
[3] https://www.phoronix.com/news/F2FS-Case-Insensitive-For-5.4
[4] https://lore.kernel.org/lkml/20241115-vfs-tmpfs-d443d413eb26@brauner/
[5] https://www.phoronix.com/search/Linux+6.13
Following file-systems like [2]EXT4 and [3]F2FS that have supported optional case-insensitive file/folder support, the Tmpfs file-system is now seeing similar support. As with the other file-systems, the case insensitive lookup ability is being driven in part for enhancing compatibility layers like Wine and in turn Valve's Steam Play (Proton) for better dealing with Windows software that isn't always graceful around case sensitive file-systems.
With Tmpfs being a temporary file-system residing in RAM, there are some differences in handling compared to the case folding on EXT4 and F2FS. Christian Brauner explained in the [4]VFS Tmpfs pull request for Linux 6.13:
"This adds case-insensitive support for tmpfs.
The work contained in here adds support for case-insensitive file names lookups in tmpfs. The main difference from other casefold filesystems is that tmpfs has no information on disk, just on RAM, so we can't use mkfs to create a case-insensitive tmpfs. For this implementation, there's a mount option for casefolding. The rest of the patchset follows a similar approach as ext4 and f2fs.
The use case for this feature is similar to the use case for ext4, to better support compatibility layers (like Wine), particularly in combination with sandboxing/container tools (like Flatpak).
Those containerization tools can share a subset of the host filesystem with an application. In the container, the root directory and any parent directories required for a shared directory are on tmpfs, with the shared directories bind-mounted into the container's view of the filesystem.
If the host filesystem is using case-insensitive directories, then the application can do lookups inside those directories in a case-insensitive way, without this needing to be implemented in user-space. However, if the host is only sharing a subset of a case-insensitive directory with the application, then the parent directories of the mount point will be part of the container's root tmpfs. When the application tries to do case-insensitive lookups of those parent directories on a case-sensitive tmpfs, the lookup will fail."
[5]Linux 6.13 is shaping up to be another feature-heavy kernel cycle and will represent the first major Linux kernel update of 2025.
[1] https://www.phoronix.com/news/Linux-6.13-VFS-Untorn-Writes
[2] https://www.phoronix.com/news/EXT4-Case-Insensitive-Linux-5.2
[3] https://www.phoronix.com/news/F2FS-Case-Insensitive-For-5.4
[4] https://lore.kernel.org/lkml/20241115-vfs-tmpfs-d443d413eb26@brauner/
[5] https://www.phoronix.com/search/Linux+6.13
Spacefish