Maybe we can retry at this situation.
On 6/18/07, Oliver Neukum <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I am looking at usb_sg_init().
>
> void usb_sg_wait (struct usb_sg_request *io)
> {
> int i, entries = io->entries;
>
> /* queue the urbs. */
> spin_lock_irq (&io->lock);
> for (i = 0; i < entries && !io->status; i++) {
> int retval;
>
> io->urbs [i]->dev = io->dev;
> retval = usb_submit_urb (io->urbs [i], GFP_ATOMIC);
>
> /* after we submit, let completions or cancelations fire;
> * we handshake using io->status.
> */
> spin_unlock_irq (&io->lock);
> switch (retval) {
> /* maybe we retrying will recover */
> case -ENXIO: // hc didn't queue this one
> case -EAGAIN:
> case -ENOMEM:
> io->urbs[i]->dev = NULL;
> retval = 0;
> i--;
> yield ();
> break;
>
> In essence this leaves handling a persistent failure to the generic
> scsi layer, which will timeout and abort the request. Is there any objection
> to report the URB where it failed to the immediate user and let him
> retry the remainder or handle the error any other way?
> I dimly remember discussing this routine in the past.
>
> Regards
> Oliver
> _______________________________________________
> Usb-storage mailing list
> [EMAIL PROTECTED]
> https://lists.one-eyed-alien.net/mailman/listinfo/usb-storage
>
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel