如果write()在Linux ext3上遇到磁盘坏扇区会发生什么

时间:2017-11-28 16:09:59

标签: linux filesystems

让我们说,我的程序调用write()将一些数据写入用ext3格式化的磁盘分区。磁盘恰好会产生一个坏扇区,数据将被刷新。

将使用errno返回write()吗?或OS将移动到另一个好的扇区,write()返回OK(也标记为不再使用的坏扇区)?

1 个答案:

答案 0 :(得分:0)

假设您正在使用刚刚打开()ed的文件描述符,您将通过内核vfs层缓冲对磁盘的访问。当你写()时,你的写入将被放入内核中的缓冲区而不是实际写入磁盘。所以write()将正常成功。

如果您想强制要写入更改,则必须sync()。如果磁盘上有错误,sync()也会成功。错误显示的位置是dmesg

请注意,如果它是可恢复的错误,则可以静默避免,并为该磁盘更新坏块列表。