Hi all, We would like to support the usage of casefold filesystems with overlayfs to be used with container tools. This use case requires a simple setup, where every layer will have the same encoding setting (i.e. Unicode version and flags), using one upper and one lower layer. * Implementation When merge layers, ovl uses a red-black tree to check if a given dentry name from a lower layers already exists in the upper layer. For merging case-insensitive names, we need to store then in tree casefolded. However, when displaying to the user the dentry name, we need to respect the name chosen when the file was created (e.g. Picture.PNG, instead of picture.png). To achieve this, I create a new field for cache entries that stores the casefolded names and a function ovl_strcmp() that uses this name for searching the rb_tree. For composing the layer, ovl uses the original name, keeping it consistency with whatever name the user created. The rest of the patches are mostly for checking if casefold is being consistently used across the layers and dropping the mount restrictions that prevented case-insensitive filesystems to be mounted. Thanks for the feedback! --- Changes in v2: - Almost a full rewritten from the v1. v1: https://lore.kernel.org/lkml/20250409-tonyk-overlayfs-v1-0-3991616fe9a3@xxxxxxxxxx/ --- André Almeida (8): olv: Store casefold name for case-insentive dentries ovl: Create ovl_strcmp() with casefold support fs: Create sb_same_encoding() helper ovl: Ensure that all mount points have the same encoding ovl: Set case-insensitive dentry operations for ovl sb ovl: Set inode S_CASEFOLD for casefolded dentries ovl: Check casefold consistency in ovl stack ovl: Drop restrictions for casefolded dentries fs/overlayfs/inode.c | 7 +++++ fs/overlayfs/namei.c | 25 ++++++--------- fs/overlayfs/params.c | 7 ----- fs/overlayfs/readdir.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++-- fs/overlayfs/super.c | 21 +++++++++++++ fs/overlayfs/util.c | 8 ++--- include/linux/fs.h | 22 ++++++++++++++ 7 files changed, 143 insertions(+), 29 deletions(-) --- base-commit: ba04dc6f8768e61d6de2d0c5c5079a8b54e62fbb change-id: 20250409-tonyk-overlayfs-591f5e4d407a Best regards, -- André Almeida <andrealmeid@xxxxxxxxxx>