传统的文件系统创建一个结构文件操作结构来实现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/

10-10 05:16