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制御用のデータ
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); 作成中