块驱动程序如何通知内核设备出现故障

时间:2015-11-11 07:53:51

标签: linux linux-kernel linux-device-driver

我的询问是关于街区司机的。假设我们的设备 遇到问题,所有错误处理都失败了。唯一剩下的 我看到驱动程序要做的选项是将其脱机。意图是 要通知系统以避免发送任何将来的请求 设备和不可访问所以任何邪恶的行为,如系统 崩溃,避免。无论是否使用该设备,这都应该有效 独立或使用RAID。

问题是如何干净利落地完成。我搜索过现有的司机 在内核源代码(如sd,skd等),以及他们所做的一切(正如我所见) 它是用-EIO完成后续请求 (__blk_end_request_all(rq, -EIO))。到目前为止,这与FIO合作, 因为一旦发生这种情况并且所有的fio请求都已完成 -EIO,fio停止发送更多请求。但如果与RAID一起使用 触发不可恢复的故障,只是完成错误的请求 好像没有用。 RAID检测到错误,但无法删除 从它的系统错误的设备。有时内核仍在发送 请求RAID故障设备(应该停止)。袭击 变得堕落(以不太好的方式)并最终崩溃 系统

那么块驱动程序如何正确地通知上层 它的设备有故障,不能再用于该会话吗?

0 个答案:

没有答案