Read(User - ext4)
Retired DISLab
(버전 사이의 차이)
(한 사용자의 중간의 편집 24개 숨겨짐) | |||
1번째 줄: | 1번째 줄: | ||
<uml> | <uml> | ||
− | (*) --> "read" | + | (*) --> "read()" |
− | "read" --> "SYSCALL_DEFINE3 | + | "read()" --> "SYSCALL_DEFINE3()" |
− | + | ||
− | + | ||
− | + | ||
+ | partition VFS { | ||
+ | "SYSCALL_DEFINE3()" --> "vfs_read()" | ||
+ | --> "do_sync_read()" | ||
+ | } | ||
+ | |||
+ | |||
+ | partition EXT4 { | ||
+ | "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)" | ||
</uml> | </uml> |
2014년 5월 20일 (화) 14:46 현재 판