07.06.2013 Views

Scsi - Index of

Scsi - Index of

Scsi - Index of

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

这种命令应该由mid level 来发,不应该由底层驱动来发,不过通常mid-level 并不愿意发这个命令,因为<br />

实<br />

际上很多SCSI 主机适配卡(SCSI host adapter)会自动request the sense.所以为了让事情变得简单,<br />

设计上要求底层驱动去对付这个问题.所以要么SCSi host adapters 自动获得sense data,要么就是咱们<br />

LLD(底层驱动程序)去发送这个命令,对于咱们这个模拟的scsi 系统,当然只能是用软件去实现,即咱们必<br />

须<br />

在LLD 中用代码来发送request sense.<br />

再然后,716 行,如果经过了这么一番折腾,srb->result 仍然等于SAM_STAT_GOOD,(我们在559 行,<br />

即进行autosense 之前把srb->result 设置成了SAM_STAT_GOOD.)那么说明真金不怕火炼,我们再<br />

判<br />

断最后一个条件,即我们要求传输的数据长度是srb->request_bufflen,而实际上还剩下srb->resid个字<br />

节没有被传送,这种情况本身没什么,但是struct scsi_cmnd 中有一个成员叫做underflow,其意思是如果<br />

传输的数据连这个值都没有达到的话,不管其它条件如何,必须向上层反映,出错了.换句话说,有些scsi 命<br />

令<br />

有一个底线,你至少得达到我这个底线,否则我跟你急!所以这里就是判断这么一个条件是否满足,如果传输<br />

的长度小于srb->underflow,那么不用废话,即便你其它条件判断下来都觉得这个命令是成功的,我还是要<br />

汇报说你这个命令执行有误.而关于这种情况,我们反馈给scsi core 的result 是DID_ERROR

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!