新トップページ ...
旧トップページ
Linux 日記 Linux日記08~ Linux日記2006 Linux日記2005 Linux日記2004 Linux日記2003 Linux日記2002 Linuxカーネル メモ quota メモ OV511 メモ + 勉強会 ... (6p)
アートでいこう(笑)! イラスト日記08〜 イラスト日記2005 イラスト日記2004 イラスト日記2003 アイコン描こうぜ
UCC(梅丘自転車部) 活動ログ2003 活動ログ2001 活動ログ2000 その他 ワシの愛車
自動車関連 FD3S日記05~ S202日記2004 S202日記2003 S202日記2002 S202給油等記録 S202掲示板
自宅前カメラ EZweb/PCSV用 プロフィール 社会科ノート 2004 社会科ノート 2003 全角半角変換 自家用リンク 視聴予定表 メモ
W/O index |
[ カーネル側 ]
/usr/src/linux/fs/ext3/inode.c(0):
/usr/src/linux/fs/ext3/file.c(/ext3_file_inode_operations =/):
/usr/src/linux/fs/ext3/file.c(/ext3_file_operations =/):
/usr/src/linux/fs/ext3/file.c(/ext3_file_write .*buf,/): 定義
/usr/src/linux/fs/ext3/file.c(/will_journal_data =/):
/usr/src/linux/include/linux/ext3_fs.h(/ext3_should_journal_data/):
ext3_should_journal_data() 定義。この調子だと、大抵真だな
/usr/src/linux/fs/ext3/file.c(/handle = ext3_journal_start/):
ジャーナリングのハンドル
/usr/src/linux/fs/ext3/file.c(/journal_get_write_access/):
/usr/src/linux/fs/ext3/file.c(/journal_dirty_metadata/):
/usr/src/linux/fs/jfs/transaction.c(/int journal_dirty_metadata/):
データの書き出しループ
ext3 のトランザクション限界を越えて、
/usr/src/linux/fs/ext3/file.c(/if (journal_extend(handle, needed))/):
ジャーナリングファイルの拡大に失敗したとき
/usr/src/linux/fs/ext3/file.c(/ext3_mark_inode_dirty/):
dirty マークをつけて、
/usr/src/linux/fs/ext3/file.c(/ext3_journal_stop/): 一旦停止
/usr/src/linux/fs/ext3/file.c(/handle = ext3_journal_start/handle = ext3_journal_start/):
再スタート
/usr/src/linux/fs/ext3/file.c(/bh = ext3_getblk/): ?
/usr/src/linux/fs/ext3/dir.c(/ext3_dir_inode_operations =/):
/usr/src/linux/fs/ext3/dir.c(/ext3_dir_operations =/):
write は重い。rename あたりから見たほうが、ジャーナリングそのものは
わかりやすいはずだ。
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/):
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/ext3_journal_start/):
ジャーナル開始
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/journal_get_write_access(handle, old_bh)/):
バッファへのジャーナル書きこみだ
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/urnal_get_write_access(handle, new_bh)/): 同上
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/ext3_delete_entry/): 古いの死ねっ
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/ext3_mark_inode_dirty(handle, old_dir)/):
i-node を求めて、その bh に journal_dirty_metadata()
/usr/src/linux/include/linux/ext3_jfs.h(/ext3_mark_inode_dirty/):
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/journal_dirty_metadata(handle, old_bh)/):
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/journal_dirty_metadata(handle, new_bh)/):
/usr/src/linux/fs/ext3/namei.c(/ext3_rename/ext3_journal_stop/): ジャーナル終了
ようわからん。
ので、やっぱり unlink から見よう。
/usr/src/linux/fs/ext2/namei.c(/ext2_unlink/):
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/): struct inode * dir は、
親ディレクトリ実体。struct dentry *dentry は、消去対象のファイル実体に
リンクされた、ディレクトリエントリ
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/ext3_journal_start/):
※ジャーナリングスタート
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/ext3_find_entry (dir/):
親ディレクトリのディレクトリエントリを取得
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/ext3_delete_entry/):
※親ディレクトリのエントリを削除
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/ext3_mark_inode_dirty(handle, dir)/):
※親ディレクトリの遅延書きこみを要求
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/--/):
削除対象の参照数を dec
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/ext3_mark_inode_dirty(handle, inode)/):
※削除対象の遅延書きこみを要求
/usr/src/linux/fs/ext3/namei.c(/ext3_unlink/ext3_journal_stop/):
※ジャーナリング終了
/usr/src/linux/include/linux/ext3_jfs.h(/ext3_journal_start/):
/usr/src/linux/include/linux/ext3_fs.h(0):
/usr/src/linux/include/linux/fs.h(0):
[ e2fsprogs 側 ]
/home/knaka/rpm/BUILD/e2fsprogs-1.20/lib/ext2fs/mkjournal.c(/ext2fs_add_journal_inode/):
マウント中ならば .journal ファイルに、さもなければ EXT2_JOURNAL_INO を
持つファイルにジャーナルファイルを作る
/home/knaka/rpm/BUILD/e2fsprogs-1.20/include/linux/ext2_fs.h(/define EXT2_JOURNAL_INO/):
/home/knaka/rpm/BUILD/e2fsprogs-1.20/lib/ext2fs/block.c(/ext2fs_block_iterate2/):
マウントされていなのであるから、i ノード指定でファイルに書くことも可能だ
操作対象のデータを「データ」と呼び、それに付随する情報を「メタデータ」と
呼ぶ。i ノードの持つデータも、メタデータの一種。
buffer head (BH) は、バッファ内のデータに対するメタデータと考えてよい?
|