1
傳統的文件系統創建一個struct file_operations結構來實現VFS功能。例如,在ext4(Linux 4.0和之前)中,struct file_operations ext4_file_operations使讀指針指向new_sync_read。在較新的Linux中,哪些函數在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,
....
}
然而,在Linux的4.1及更高版本,不存在這樣的分配爲讀指針,但增加了一個splice_read指針。
的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」 定義的file_operations結構仍具有讀指針。那麼,ext4中的哪個函數現在負責傳統的讀取函數?
我現在認爲傳統的讀取是由新版本的read_iter直接實現的,就像在舊版本中它是由read_iter間接實現的一樣。如果這是正確的,那麼VFS讀取更新版本的作用是什麼? – Akr