Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
creatシステムコールまたはopenシステムコールにおいてO_CREATが指定された場合、 open_namei()関数がパス検索に失敗した場合、指定されたパス名を持つファイルの生成を試みる。ファイルの生成は、親ディレクトリのiノードのcreateオペレーションを呼び出すことにより実現されている。
ext2ファイルシステムの場合は、 ext2_create関数が呼び出される。
ext2_create(親ディレクトリのiノード, 登録するdentry) フリーiノードを一つ確保(ext2_new_inode関数) iノードの初期化 (ファイル操作テーブルとして、ext2_file_inode_operations, ext2_file_operations, ext2_aopsを登録する) ◇iノードの遅延書き込み要求(mark_inode_dirty関数) このiノードを親ディレクトリに登録(ext2_add_entry関数) 新規作成したファイルのdentryとiノードをリンク(d_instantiate関数)
下に簡単な図で動作を示す。◆は同期書き込み、◇は遅延書き込み、◆と◇の横に書いてある番号は、処理順序を表している。
問題点
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:18:52, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members