Filesystems EXT3文件操作

Filesystems EXT3文件操作,filesystems,linux-kernel,ext3,Filesystems,Linux Kernel,Ext3,我试图了解Linux如何处理EXT3文件。 我正在看fs/ext3/file.c,其中存在处理文件的文件操作: const struct file_operations ext3_file_operations = { .llseek = generic_file_llseek, .read = do_sync_read, .write = do_sync_write, .aio_read = ge

我试图了解Linux如何处理EXT3文件。 我正在看
fs/ext3/file.c
,其中存在处理文件的文件操作:

const struct file_operations ext3_file_operations = {
    .llseek         = generic_file_llseek,
    .read           = do_sync_read,
    .write          = do_sync_write,
    .aio_read       = generic_file_aio_read,
    .aio_write      = generic_file_aio_write,
    .unlocked_ioctl = ext3_ioctl,
#ifdef CONFIG_COMPAT
    .compat_ioctl   = ext3_compat_ioctl,
#endif
    .mmap           = generic_file_mmap,
    .open           = dquot_file_open,
    .release        = ext3_release_file,
    .fsync          = ext3_sync_file,
    .splice_read    = generic_file_splice_read,
    .splice_write   = generic_file_splice_write,
};
例如,我如何找到何时将does.open替换为函数“dquot”file“u open”? 我是否应该遵循
fs/open.c
中定义的系统调用:

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
或者我应该看看其他功能


我正在为用户模式Linux工作Linux 3.7.6

Linux内核是以OOP方式组织的(尽管是用C编写的)。
struct file\u operations
实际上是一个类,成员(函数指针)是类的函数成员(“Java头的方法”)。您引用的代码通过填充函数指针来设置ext3对象。这是在编译/链接时完成的

open(2)
系统调用通过查找与当前文件系统相关的
struct file_操作
并调用其
open
成员,间接调用此函数


我建议您查看该页面,以获得整体视图和更详细的帮助。

是的,我知道这些信息。我的问题是open函数在哪里与EXT3的“file_操作”交互?