ソースコード読み
今日は、ソースコードを読んだのである。
単に読むのではなく、目的を持って読んだのである。
writeシステムコールを呼び出したときに、O_SYNCオプションをつけると、確実にディスクに書いたことを保障される、はずである。Linuxシステムではどうなのか、分析を行った。
分析には、クロスリファレンスLinuxというサイトが便利だ。
http://lxr.linux.no/
このサイトはブックマークして、参照すべきサイトである。
で、分析では、もう一人の研究員とペアプログラミングよろしく議論しながら読んでいった。この関数はなんだろう。この構造体は。ここでは何がおこっているのか。
一人では見逃しがちな点も、二人ならば補完しあって進むので、すごい勢いで分析が進む。
結論としては、Linuxのメジャーなすべてのファイルシステムで、カーネルの共通部分のルーチンに依存しており、その共通部分(fs/buffer.c)では、「確実に書き込む」ことはやっていない、ということがわかった。