ソース表示: internal24-119-ext2_bread関数アルゴリズム #24089

[[PageNavi(internal24-navi)]]

{{{ comment
h2w-title:ext2_bread関数アルゴリズム
}}}

 

== ext2_bread関数アルゴリズム == #SECTION03782000000000000000

ext2_bread関数は、ブロックの確保、ブロックに対応したバッファの確保、
ブロック内容のバッファへの読み込みまでを行う。
create指定がある場合、ファイルに対応するブロックがない場合、
ファイル拡張を行う。

{{{
  ext2_bread(iノード、オフセット、createフラグ)
      オフセットに対応するブロックのバッファを獲得(ext2_getblk関数)
      if(ディレクトリの拡張があった && ディレクトリプリアロケーションモード) {
            さらに一つブロックを先行拡張する(ext2_getblk関数)
            スーパブロックに指定された数分だけブロックを先行拡張する(ext2_getblk関数)
      }
      if(バッファの内容が有効) return バッファ
      バッファへブロックデータを読み込む(ll_rw_block関数、wait_on_buffer関数)
      return バッファ
}}}

'''問題点など'''

  1.  この処理は、ディレクトリ拡張時に複数ブロックまとめて確保して
      しまうことを意味している。必要がないときは
      ディレクトリプリアロケーション機能が動かないようにして
      おかねばならない。(現時点においてはmkfsではデフォルトでこの機能
      をOFFに初期化しており, 指定する方法もないようだ)

----

''(NIS)HirokazuTakahashi [[BR]]
2000年12月09日 (土) 23時55分06秒 JST''1

[[PageNavi(internal24-navi)]]