Откуда в ext3 исходный код отправляются запросы на чтение косвенного блока? - PullRequest
0 голосов
/ 05 марта 2012

Я хочу найти это место и установить флаг в этом запросе, чтобы я мог идентифицировать эти запросы на уровне блока io. я изменил био-структуру и добавил дополнительный флаг, и я хочу установить этот флаг для всех косвенных запросов на блокировку, отправленных на диск.

1 Ответ

2 голосов
/ 05 марта 2012

Я считаю, что вы ищете, это вызов ext3_get_branch в / 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_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 вызывается ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos);`` in do_sync_read wherefilp-> f_op-> aio_read is the function pointer of generic_file_aio_read`, определенный в / fs / ext3 / inode.c

do_sync_read, сопоставляется с системным вызовом read в определении структурыgeneric_ro_fops.

...