Hi,

> The problem is that the lower layers do return a scsi-cmd with "DID_ERROR<<16
> (=0x70000)", but the usb-storage insists to complete the command instead, thus
> waiting forever.
> 
> The following patch to usb.c does it for me.

Good to hear!  That'd need to go through Matt Dharm (storage/usb.c).


> --- usb.c       Mon Apr  1 16:08:31 2002
> +++ usb.c.org   Mon Apr  1 16:07:15 2002
> @@ -461,9 +461,7 @@
>                         up(&(us->dev_semaphore));
> 
>                         /* indicate that the command is done */
> -/*cm 01-Apr-02: allow also DID_ERROR as premature abort of command */
> -                       if ((us->srb->result != DID_ABORT << 16) &&
> (us->srb->result != DID_ERROR << 16)) {
> -/* original line:      if (us->srb->result != DID_ABORT << 16) { */
> +                       if (us->srb->result != DID_ABORT << 16) {
>                                 US_DEBUGP("scsi cmd done, result=0x%x\n",
>                                            us->srb->result);
>                                 set_current_state(TASK_INTERRUPTIBLE);
> 
> 
> Perhaps this is not the only error situation where a command is not completed?

There are other cases like that.  Did you try that error handling fix
I forwarded to you -- does that also fix this problem?  If not, I'd hope
that patch would get updated to include (something like) this.

- Dave




_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to