ファイルに対してfsync()を呼び出すと、ファイルが破損する可能性がありますか?例えばデータブロック間でfsync()のアトミック性
、私のファイルは、ディスクブロックに広がる言う:
A B
|---------| |--------|
| Hello, | -> | World! |
|---------| |--------|
| 1234567 | | 89abcd |
|---------| |--------|
は、私は(非常に非効率的な方法で)を小文字にファイル全体の内容を変更したいと言います。だから、ファイルの1位に "H"を "h"に変更し、8位に "W"を "w"に変更しようとします。私はファイルにfsync()
を呼び出します。このファイルは2つのディスクブロックに分散されています。
- 書き込みの順序は維持されていますか?
- 両方の書き込みがディスクに書き込まれるまで
fsync
コールは任意の関連するメタデータとともに、戻りません、ディスク全体でアトミックにfsync()操作*