0

我想找到那个地方并在那个请求中设置一个标志,这样我就可以在块 io 层中识别这些请求。我改变了生物结构并添加了一个额外的标志,我想为所有发送到磁盘的间接块请求设置这个标志。

4

1 回答 1

2

我相信您正在寻找的是对ext3_get_branchin /fs/ext3/inode.c的调用是您正在寻找的。它读取导致数据的间接块链。

直到读取系统调用的调用跟踪如下: /fs/ext3/inode.c

ext3_get_branch被称为ext3_get_blocks_handle

ext3_get_blocks_handle被称为ext3_get_block

ext3_get_block作为函数指针传递,mpage_readpage/fs/mpage.c中被调用ext3_readpage

/mm/filemap.c

ext3_readpagemapping->a_ops->readpage(filp, page);in调用do_generic_file_read

do_generic_file_read被称为generic_file_aio_read

/fs/read_write.c

generic_file_aio_read由 /fs/ext3/inode.c 中定义的ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos);`` indo_sync_read wherefilp->f_op->aio_read is the function pointer ofgeneric_file_aio_read`调用

do_sync_read映射到read的结构定义中的系统调用generic_ro_fops

于 2012-03-05T11:24:08.570 回答