In the following two emails is contains patches for
case-insensitive and Unicode support for XFS in Linux.
It implements case-insensitivity utilising a Unicode
case folding table stored on disk generated from
As the filesystem stores names as Unicode (UTF-8), the "nls"
mount option has been added to support systems not utilising
UTF-8 natively. If the nls mount option is not used, it will
use the default NLS defined in the kernel's config.
To allow case-insensitivity to be a mount option rather than
a mkfs option, the hashes stored on disk are always case-folded.
This is indicated by the new "unicode" bit in the superblock.
This bit also associated with the presence of the case-folding
table on disk. This affects both directory and extended
With the case-folding table on disk, it allows us to upgrade
the table in the future while retaining backwards and forwards
compatibility. It also allows special case tables such as
Turkic case which is supported in this patch set.
There are two mount options for enabling case-insensitivity
on a Unicode XFS filesystem:
- "ci" - enables case-insensitivity for file names
- "ciattr" - enables case-insensitivity for extended
xfs_repair and xfs_db are fully aware of the case-folding
table. xfs_db has a basic "cft" command which can show
the table's header.