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

generic_commit_write()


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

1. 概要

ファイルWrite時のcommit時に使われるgeneric_commit_write()関数の解説。

Ext2FSではaddress_space_operationsであるext2_aops.commit_writeに直接登録されている。

2. generic_commit_write()の動作

generic_commit_write()のプロトタイプは以下のとおり。

generic_commit_write(struct file *file, struct page *page, unsigned from, unsigned to)

fileは書き込み対象のファイルで、pageはデータをWriteしたページキャッシュ(*1)、from,toは書き込んだ領域(ファイル内でのOffset)を表す。

generic_commit_write()はWriteした領域(from〜to)に対応するBufferをDirty状態にし(BH_Dirtyをセット)、また対応するページキャッシュもDirty状態にしてページキャッシュ上の更新データが後でディスクに書き込まれるようにする(図1)。




図1 BufferとPageのDirty化

(*1) ページキャッシュへのデータへの書き込みはcommit_write前に行われる。データの書き込み手順としては prepare_write処理 → PageCacheへのデータ書き込み → commit_write処理 となる。

関連ページ



最終更新 2007/09/27 12:06:43 - kztomita
(2007/09/27 11:57:40 作成)
添付ファイル
generic_commit_write.png - kztomita


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