ファイルデータのI/Oはページキャッシュを経由して行われる。~
バッファキャッシュと目的は同じで、ファイルI/Oに使用したページは、~
ハッシュ管理されメモリ上にキャッシュとして残される。~
どのハッシュキューを使用するかは、inodeのメンバであるi_mappingのさすアドレス~
とオフセットから計算される。~
ページキャッシュはinode の i_mapping からもリンクされる。~
フリーなページはzone構造体に連続するページのサイズ毎に分割されてリンクされる。~
~
ページキャッシュ関連関数~
・int block_read_full_page(struct page *page, get_block_t *get_block)
ページの読み込み
ページ内でバッファが有効でないものについてll_rw_block()でreadする。
get_block関数は、ブロックをバッファにマッピングするのに使用される。
ページを確保したばかり等でページに対応するバッファヘッダがなければバッファヘッダを割り当てる。
ページ構造体の buffers はページの先頭バッファのバッファヘッダを指し、
バッファヘッダ内の b_this_page が次のページ内バッファのヘッダを指している。