我的询问是关于街区司机的。假设我们的设备 遇到问题,所有错误处理都失败了。唯一剩下的 我看到驱动程序要做的选项是将其脱机。意图是 要通知系统以避免发送任何将来的请求 设备和不可访问所以任何邪恶的行为,如系统 崩溃,避免。无论是否使用该设备,这都应该有效 独立或使用RAID。
问题是如何干净利落地完成。我搜索过现有的司机
在内核源代码(如sd,skd等),以及他们所做的一切(正如我所见)
它是用-EIO
完成后续请求
(__blk_end_request_all(rq, -EIO)
)。到目前为止,这与FIO合作,
因为一旦发生这种情况并且所有的fio请求都已完成
-EIO
,fio停止发送更多请求。但如果与RAID一起使用
触发不可恢复的故障,只是完成错误的请求
好像没有用。 RAID检测到错误,但无法删除
从它的系统错误的设备。有时内核仍在发送
请求RAID故障设备(应该停止)。袭击
变得堕落(以不太好的方式)并最终崩溃
系统
那么块驱动程序如何正确地通知上层 它的设备有故障,不能再用于该会话吗?