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

block_write_full_page()


Rev.1を表示中。最新版はこちら

1.概要

block_write_full_page()はPageCacheのページデータをディスクへWriteBackする汎用ルーチン。

2.実装

プロトタイプ: block_write_full_page(struct page *page, get_block_t *get_block, struct writeback_control *wbc)

page:      WriteBackするPageCache上のページ
get_block: ディスクブロックを取得するget_blockハンドラ(ファイルシステムに依存)
wbc:      WriteBack制御用のデータ

書込み処理のメインは__block_write_full_page()を呼び出して処理する。

__block_write_full_page()の処理概要

/* 対象ファイル(inode)の最終ブロック番号 */
last_block = (i_size_read(inode) - 1) >> inode->i_blkbits;

/* ページにBufferが無ければここで作成 */
if (!page_has_buffers(page)) {
    create_empty_buffers(page, 1 << inode->i_blkbits,
                           (1 << BH_Dirty)|(1 << BH_Uptodate));
}

/* ページのBufferをなめる */
do {

} while (bh != head);
作成中


関連ページ


最終更新 2007/12/06 00:54:57 - kztomita
(2007/12/06 00:54:57 作成)
添付ファイル
block_write_full_page.png - kztomita


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