Ext4 文件系统的 Linux 内核支持不区分大小写的操作

Ted Ts'o,ext2/ext3/ext4 文件系统的作者, 接受了 到Linux-next分支,在此基础上将形成Linux 5.2内核的发布,一组 变化,在 Ext4 文件系统中实现对不区分大小写操作的支持。 这些补丁还添加了对文件名中 UTF-8 字符的支持。

使用新属性“+F”(EXT4_CASEFOLD_FL)可以选择启用与各个目录相关的不区分大小写的操作模式。 当对目录设置该属性时,所有对目录中的文件和子目录的操作都会不考虑字符大小写,包括搜索和打开文件时都会忽略大小写(例如文件Test.txt、此类目录中的 test.txt 和 test.TXT 将被视为相同)。 默认情况下,除了具有“+F”属性的目录外,文件系统仍然区分大小写。 为了控制不区分大小写模式的包含,提供了一组修改后的实用程序 e2fsprogs.

这些补丁是由 Collabora 员工 Gabriel Krisman Bertazi 准备的,并被接受 第七 之后的尝试 三年 评论的发展和消除。 该实现不会更改磁盘存储格式,仅在更改 ext4_lookup() 函数中的名称比较逻辑并替换 dcache(目录名称查找缓存)结构中的哈希级别上起作用。 “+F”属性的值存储在各个目录的 inode 中,并传播到所有子文件和子目录。 编码信息存储在超级块中。

为了避免与现有文件的名称冲突,只能在文件系统中的空目录上设置“+F”属性,在该文件系统中,在安装阶段启用了文件和目录名称的 Unicode 支持。 激活“+F”属性的目录元素的名称会自动转换为小写并以这种形式反映在 dcache 中,但以用户最初指定的形式保存在磁盘上,即尽管处理名称时不考虑大小写,但名称的显示和保存不会丢失有关字符大小写的信息(但系统不允许您创建具有相同字符但大小写不同的文件名)。

来源: opennet.ru

添加评论