[[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)]]