write10命令下发失败的解决,scsi命令write10
这次遇到一个下发write10命令失败的问题,最后解决了,记录一下,避免再犯。
首先用的是scsi命令write10命令,在实际测试的时候发现总是第一次成功,后面就失败了。
后来检查发现,是以为代码设计不合理,导致每发一次write10命令,都会进入一次creatdevice函数,并且一次命令结束之后也没有closedevice,导致重复进入creatdevice,使得设备抓取异常。后来增加了closedevice之后,问题得到解决。
总之scsi设备通信的一个正常结构流程应该是creatdevice,deviceiocontrol(一个或多个),closedevice。在抓取到句柄之后可以下发任意多个命令,但是不能重复创建句柄,另外在测试结束的时候,别忘了closedevice。