我正在使用make_request方法开发块驱动程序,有效地绕过块层中的现有scsi或请求堆栈。所以这意味着我直接使用bios。根据linux文档中的规定以及引用内核中的类似驱动程序,您可以使用bio_endio函数关闭具有bio的会话。
我通常在成功完成I / O期间调用bio_endio,意味着错误代码为零。但有些情况是这种情况未得到满足或存在错误情况。我的问题是,可以使用的有效错误代码是什么?我的初步印象是,除了错误代码为零之外,bio_endio将失败。我读过某个地方--EBUSY无法识别,我试过-EIO但我的司机崩溃了。我对bio_endio(bio,-EIO)领导的一些dio_xxx功能感到恐慌,我不知道为什么会这样。我想阻止在到达我的队列深度之后发送给我的后续bios并且没有留下任何标签,所以我想使用带有错误代码的bio_endio。
这些错误代码是什么,它们是否适用于我的预期功能?或者除了bio_endio之外还有更好的方法吗?谢谢!