当对文件调用fsync()时,文件会变得损坏吗?
例如,假设我的文件跨越两个磁盘块:
A B
|---------| |--------|
| Hello, | -> | World! |
|---------| |--------|
| 1234567 | | 89abcd |
|---------| |--------|
假设我想以一种非常低效的方式将整个文件内容更改为小写。因此,我希望将文件的位置1定位到将“H”更改为“h”的位置,然后将位置8更改为将“W”更改为“w”的位置。然后,我调用fsync()
来同步文件。该文件分布在两个磁盘块上。
- 写入的顺序是否得到保留?
fsync()
操作是否跨磁盘是原子性的?