-
write 过程
- 调用 genric_perform_write 它里面是一个循环,每次写入对应的页
调用 write_begin 对系统进行初始化工作,主要是ext4_journal_start 即日志文件系统准备,然后调用grab_cache_page_write 获取需要写入的缓存页
iov_iter_copy_form_user_atmoic 即通过kmap_atomic 映射内核虚拟地址,然后将用户态数据拷贝到内核态。再使用kumap_atmoic 删除映射
- ext4_write_end 结束日志写入,将数据写入缓存。
- balance_dirty_pages_ratelimited 查看脏页数量是否超过限制
- 调用 genric_perform_write 它里面是一个循环,每次写入对应的页
-
read 过程
- genric_file_buffer_read 直接查看page cache是否有缓存,假如不存在,然后读入该页,并进行预读。
- copy_page_to_iter 将内容从内核态复制到用户态。