伊藤です。

> 
> Linux は同期書き込みをしろと言っても、必ずしもしてくれないからです。
>    http://developer.osdl.org/dev/doubt/
> 
WebPageにと、Project DOUBTの紹介用のPDFを読みました。
私のスキル不足により、全てを理解することは出来ませんでしたが、
「Linixのファイルシステムは、書けと言ってもちゃんと書いていない」の
くだりは、大変面白かったです。

> 
> Linux の dd 自体は同期書き込みをしろ、と言っていたと思います。floppy
> disk のようなものを使って、わざと sector copy のような事をすると、
> 交互に書いている様が判ります。
> 
> # えーっと、どういえばいいかな。NEC PC-9801 VM2 についてきた、
> # BASIC のシステムディスクコピーのような…と言えば判るかしら。
> 
> もし、dd が O_SYNC を使っていない、等の理由で非同期書き込みになって
> いるなら、書き込みはもっと lazy に行われるはずです。

Linuxと、FreeBSDでそれぞれddのシステムコールトレースを取ってみましたが、
どちらも、出力ファイルのopen(2)時に、O_SYNCをつけている様子はありません
でした。

Linux      : O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE
FreeBSD : O_RDWR|O_CREAT|O_TRUNC

また、両者とも、fsync(2)をコールしている様子もありませんでした。

メールによる返信