- 论坛徽章:
- 0
|
怎样实时监视硬盘的读写?
for linux-2.6.13-1.1526_FC4
1. syscall to buffer_header:
syscall_table.S :: sys_call_table ->; read_write.c :: sys_write( ) ->; read_write.c :: vfs_write( ) ->; ext3/file.c :: file->;f_op->;write( ) == read_write.c :: do_sync_write( ) ->; ext3/file.c :: filp->;f_op->;aio_write( ) == ext3_file_write -->; filemap.c :: generic_file_aio_write( ) ->; filemapc :: __generic_file_aio_write_noblock( ) ->; filemap.c :: generic_file_buffered_write( ) ->; ext3/inode.c :: a_ops->;commit_write( ) == ext3/inode.c :: ext3_writeback_commit_write( ) ->; buffer.c
:: generic_commit_write( ) ->; buffer.c :: __block_commit_write( ) ->; buffer.c :: mark_buffer_dirty( ) ->; page-writeback.c :: __set_page_dirty_nobuffers( ) ->; fs-writeback.c :: __mark_inode_dirty( )
2. buffer_header to block layer
ext3/fsync.c :: ext3_sync_file( ) ->; fs-writeback.c :: sync_inode( ) ->; fs-writeback.c :: __writeback_single_inode( ) ->; fs-writeback.c :: __sync_single_inode(
) ->; page-writeback.c :: do_writepages( ) ->; mpage.h :: generic_writepages( ) ->; mpage.c :: mpage_writepages( ) ->; a_ops->;writepage( ) == ext3_ordered_writepage( ) ->; buffer.c :: block_write_full_page( ) ->; buffer.c :: __block_write_full_page( ) ->; buffer.c :: submit_bh( ) ->; ll_rw_blk.c :: submit_bio( ) ->; ll_rw_blk.c :: generic_make_request( )
The success/failure status of the request, along with notification of completion, is delivered asynchronously through the bio->;bi_end_io function, which is bio->;bi_end_io = end_bio_bh_io_sync( ) of buffer.c
3. block layer to IDE layer
回头再补上吧 |
|