我想找到那个地方并在该请求中设置一个标志,这样我就可以在块io层中识别这些请求。 我更改了生物结构并添加了一个额外的标志,我想为发送到磁盘的所有间接块请求设置此标志。
答案 0 :(得分:2)
我相信你在寻找的是
您正在寻找 /fs/ext3/inode.c 中对ext3_get_branch
的调用。
它读取导致数据的间接块链。
直接读取系统调用的调用跟踪如下: /fs/ext3/inode.c
ext3_get_branch
调用 ext3_get_blocks_handle
ext3_get_blocks_handle
ext3_get_block
ext3_get_block
作为函数指针传递,由mpage_readpage
ext3_readpage
调用
<强> /mm/filemap.c 强>
<{>}ext3_readpage
由mapping->a_ops->readpage(filp, page);
中的do_generic_file_read
调用
do_generic_file_read
调用 generic_file_aio_read
<强> /fs/read_write.c 强>
generic_file_aio_read
由 / fs / ext3 / inode中定义的ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos);`` in
do_sync_read where
filp-&gt; f_op-&gt; aio_read is the function pointer of
generic_file_aio_read`调用。 ç强>
do_sync_read
映射到read
的结构定义中的generic_ro_fops
系统调用。