問題点、注意点

  1. SYNCモードのマウント時であっても、ここで行う操作は 全て遅延書き込みで実現されている。 ディスク更新順序は上位モジュールにゆだねられている。
  2. ディレクトリ拡張が発生した場合、ディレクトリブロックを初期化し ディスクに書き込むタイミングと、iノードのファイルサイズを ディスクに書き込みタイミングは、上位モジュールの動作によって は、ディレクトリブロックより先にiノードが書き込まれてしまう。 これは、このタイミングでシステムクラッシュすると不正な ディレクトリブロックが残る可能性がある。(注)上位モジュールの 作りによる。
  3. ディレクトリ拡張が発生した場合、ディレクトリブロックの割当は ext2_bread関数の延長で行われるが、 ディレクトリのiノードそのものの更新は遅延書き込みとなっている。 つまり、このタイミングでシステムがクラッシュすると ファイルサイズ情報が更新されていないため、ディレクトリに 新規登録したファイルを参照できなくなってしまう。
  4. ext2_delete_entry関数は、ファイル登録の削除を行ったディレクトリ のディスクへの書き込みは全く行っていない(遅延書き込み要求さえ 出していない)。書き込みの責任は全て上位呼び出し側が受け持たねば ならない。
  5. ディレクトリからのファイル名検索、ディレクトリへのファイル登録は、 毎回ディレクトリ先頭からの線形探索となる為、大きなディレクトリは アクセス速度の面で非常に不利である。

補足

ext2_add_entry関数は、エントリ名の重なりチェックは完全には行わない。呼び出し側で考慮しなければならない。


(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1