Read(User - ext4)
Retired DISLab
(버전 사이의 차이)
(한 사용자의 중간의 편집 9개 숨겨짐) | |||
3번째 줄: | 3번째 줄: | ||
(*) --> "read()" | (*) --> "read()" | ||
"read()" --> "SYSCALL_DEFINE3()" | "read()" --> "SYSCALL_DEFINE3()" | ||
+ | |||
+ | partition VFS { | ||
"SYSCALL_DEFINE3()" --> "vfs_read()" | "SYSCALL_DEFINE3()" --> "vfs_read()" | ||
− | + | --> "do_sync_read()" | |
+ | } | ||
+ | |||
+ | |||
+ | partition EXT4 { | ||
"do_sync_read()" -->"generic_file_aio_read" | "do_sync_read()" -->"generic_file_aio_read" | ||
− | " | + | --> if "not O_DIRECT" then |
− | " | + | -->"do_generic_file_read()" |
− | --> | + | "do_generic_file_read()"-->if "no page" then |
− | + | -->"page_cache_sync_readahead()" | |
+ | -->"ondemand_readahead()" | ||
+ | -->"__do_page_cache_readahead()" | ||
+ | -->"read_pages()" | ||
− | " | + | "do_generic_file_read()"-->if "PageReadahead(page)" then |
− | --> | + | --> "page_cache_async_readahead()" |
− | + | -->"ondemand_readahead()" | |
− | -->" | + | -->"__do_page_cache_readahead()" |
− | + | -->"read_pages()" | |
− | --> " | + | |
− | + | ||
− | " | + | "do_generic_file_read()"-->"ext4_readpages()" |
− | + | -->"mpage_readpages()" | |
− | + | -->"do_mpage_readpage()" | |
− | + | -->"mpage_bio_submit()" | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
-->"generic_make_request(bio)" | -->"generic_make_request(bio)" | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</uml> | </uml> |
2014년 5월 20일 (화) 14:46 현재 판