传统的文件系统创建一个结构文件操作结构来实现vfs功能。例如,在ext4(linux 4.0及之前版本)中,结构文件操作ext4文件操作使读取指针指向新的同步读取。
Linux 4.0/fs/ext4/file.c
const struct file_operations ext4_dax_file_operations = {
.read = new_sync_read,
.read_iter = generic_file_read_iter,
....
}
但是,在Linux4.1和更高版本中,读取指针没有这样的分配,而是添加了一个拼接读取指针。
Linux 4.1/fs/ext4/file.c
const struct file_operations ext4_file_operations = {
.read_iter = generic_file_read_iter,
.splice_read = generic_file_splice_read,
...
}
但是在“/include/linux/fs.h”中定义的结构文件操作仍然具有读取指针。那么,ext4中的哪个函数现在负责传统的读取函数呢?
最佳答案
我通过编写一个新的文件系统进行了测试,发现如果初始化两个指针,那么如果使用cat命令,就会调用.read
。如果使用cat命令时不初始化.read
,但初始化.read_iter
,则调用.read_iter
。
关于linux - 在较新的Linux中,ext4中的哪个功能负责读取?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45119658/