Linux Kernel(2.6)の実装に関するメモ書き

Ext2 FS 実装


編集中

Ext2 FSの実装に関するメモ。Ext2 FS自体についてはこちらを参照。

ファイルリード処理

ファイルのRead処理では、Virtual File System(VFS)から直接File SystemのReadルーチンが呼ばれるわけではない。ファイルシステムがext2の場合、VFSは汎用のファイルリード関数generic_file_read()を呼び出す(*1)。generic_file_read()はPageCacheからデータを読み出そうとし、Cacheがなかった場合にExt2のPageCacheへのデータ読み込みルーチンext2_readpage(),ext2_readpages()を呼び出す(*2)。これらのReadルーチンは、ディスクから指定されたファイルのデータを読み出して、PageCacheに格納する。全体の流れは図1のとおり。




図1 ファイルシステムのRead関数の位置付け

(*1) Ext2 FSのstruct file_operationsの.readに登録されている。Ext2以外でもほとんどのファイルシステムで本関数を呼び出す。(NFSは異なる)
(*2) Ext2のstruct address_space_operationsであるext2_aopsに登録されている。これらのルーチンはmpageモジュールの読み込みルーチンであるmpage_readpage(),mpage_readpages()を呼び出しているだけ。

関連関数

ext2_get_block(*inode, iblock, *bh_result, create)
inodeで指定したファイル/ディレクトリ内のiblock番目のデータがディスク上のどのブロックに格納されているかを取得する。結果はbh_resultに返される。create = 1の時は、対応ブロックがなかった場合に新たに割り当てを行う。

関連ページ

Ext2 FS
generic_file_read()
mpage

最終更新 2007/03/01 19:57:29 - kztomita
(2007/02/09 13:01:06 作成)
添付ファイル
read.png - kztomita


リンク
最近更新したページ
検索