我的scsiminiport经常会出现bus reset,系统就会挂起,没有任何响应。我认为只要正确处理HwScsiResetBus,系统会从bus reset状态恢复过来,我的HwScsiResetBus的内容如下:BOOLEAN MyDiskResetBus( IN P...
全文
回复(21) 2004-08-21 16:48 来自版块 - 内核编程
表情
terrychen我建议你在startio里面这么做,你需要用timercall返回的srb,在startio里面也ScsiPortNotification()回去,不过status改为pending,那些SRB_STATUS_INVALID_REQUEST和你直接返回success的也在star...(2004-08-25 09:16)
Sundsea顶 !!!!!!!!(2004-08-24 21:00)
cidentifier我的文件系统是ntfs,格式化的时候每块大小设为512字节。读写时,srb的cdb中给出逻辑块号和需要读写多少块,偏移=逻辑块号*512,这样不就可以了吗?(2004-08-24 15:26)
kangzh我没有出现过你说的情况,一般出现这个现象大概有几个原因:1,你的数据偏移不对,不能被操作系统识别,2,没有及时反馈,3,其他错误,你的代码太长,呵呵,我检查不出来,你看看我说的数据偏移是否正确(2004-08-24 14:58)
cidentifier两位老大不在家吗,顶一顶(2004-08-24 14:12)
cidentifier〉建议你在HwVDiskTimer里面 〉while( ListEntry!=NULL ) 〉{ 〉pSrb = SRB_FROM_ENTRY(ListEntry); 〉后面 〉加一句 pSrb->SrbStatus = SRB_STATUS_SUCCESS; ...(2004-08-23 18:02)
terrychen建议你在HwVDiskTimer里面 while( ListEntry!=NULL ) { pSrb = SRB_FROM_ENTRY(ListEntry); 后面 加一句 pSrb->SrbStatus = SRB_STATUS_SUCCESS; 试试看,看结...(2004-08-23 17:06)
cidentifierterrychen, 以下是我的代码(只贴出最主要的vdisk.c文件,其他代码跟这个问题不相关,太多了,就不贴了),其中有些地方是访问tdi的,不用管。我只在HwVDiskTimer中调用了ScsiPortNotification来完成srb。 帮我看看,多谢! #...(2004-08-23 16:35)
terrychen应该还是你ScsiPortCompleteRequest返回状态的问题,bus reset是一般在10秒中如果还不能返回数据(pending或者没有返回数据)情况下发生,具体timeout 的时间是由scsi_request_block里面的TimeOutValue数值决定的,1...(2004-08-23 15:09)
cidentifier问题是一旦出现bus reset,我还能恢复过来吗? 由于我做的是网络虚拟磁盘,保持响应时间在10ms之内对于网络来说不是那么容易保证的,比如服务器负载重,局域网网络负载重等情况,所以bus reset迟早会发生,这是一个不能回避的问题。 所以在一方面是提高响应时间,另一...(2004-08-23 14:23)

返回顶部