小编Dav*_*sky的帖子

如果之前返回错误,再次调用Win32 FlushFileBuffers()函数是否安全?

我看了一下这个话题:"PostgreSQL与fsync.如何将PostgreSQL错误地使用fsync 20年,以及我们将采取什么措施." 通过https://fosdem.org/2019/schedule/event/postgresql_fsync/,并阅读https://lwn.net/Articles/752063/作为背景.

如果你调用fsync()并且它失败了,那么真正的简短和简化的摘要是使用Linux,不要认为你可以再次调用fsync()来修复它,因为第二次调用成功并且你将在磁盘上损坏数据(失败的缓冲区缓存页面在第一次失败的呼叫后标记为干净).关于为什么会发生这种情况有很多细节(支持取出USB的情况 - 你不想重试并保持永远无法成功的脏缓冲区缓存页面).

FlushFileBuffers()在这种情况下如何表现?我对通过CIFS访问的文件特别感兴趣,因为更可能出现故障.

此外,鉴于操作系统可以尝试在后台随时将脏缓冲区缓存页写入稳定存储,用户登陆程序如何通过Win32 API获取这些故障?

windows filesystems winapi fsync

7
推荐指数
0
解决办法
269
查看次数

标签 统计

filesystems ×1

fsync ×1

winapi ×1

windows ×1