リハビリ?

うーん。色々再確認。
とりあえず、ブロックデバイスなレイヤとファイルシステムなレイヤの i/f を確認した方が良いだろう、という事にする。
とりあえずカーネル 2.6 解読室のブロックデバイスの実装な記述から bio 構造体というものがソレにあたる、という事らしい、と。あるいは以下な記述がある。

ファイルシステム (などの上位層) は、ブロックデバイス層に対して、bio 構造体をインターフェイスとして I/O の要求を行ないます。

基本的に I/O 要求は submit_bio() という手続きで、処理完了後に下位層から bi_end_io メンバにセットした手続きがコールバックとして呼ばれるとの事。おそらく submit_bio で grep して出てきた手続きを以下に引用 (fs/mpage.c)。

static struct bio *mpage_bio_submit(int rw, struct bio *bio)
{
	bio->bi_end_io = mpage_end_io_read;
	if (rw == WRITE)
		bio->bi_end_io = mpage_end_io_write;
	submit_bio(rw, bio);
	return NULL;
}

ここ起点で do_mpage_readpage() 見てみる予定ですが、ぶっちゃけ unlink とか write な実装確認したいんだけどな、と思いつつ自分に落ち着け、と言い聞かせている今日この頃ッス。