Hello!
I have problems with the combination ide-scsi and usb-storage. I need
ide-scsi for my CD writer and usb-storage for my camera (Fuji Finepix
2400). Mounting the camera works fine. Writing CDs was always fine.
I get problems as soon as I use the CD writer (even cdrecord -scanbus),
afterwards I cannot mount the camera any more if it wasn't plugged in at
that time. cdrecord -scanbus hangs with trying to scan scsibus1, but can
be interrupted with Ctrl-C. After this, I cannot mount the camera any
more:
blue:~# mount /mnt/camera/
mount: /dev/sda1 is not a valid block device
I tried to unload the usb-storage module, because I thought reloading it
again would solve the problems, but then modprobe -r
hangs forever (until reboot).
I have turned on debugging for usb-storage, these are the last messages:
Nov 10 19:10:59 blue kernel: usb-storage: storage_disconnect() called
Nov 10 19:10:59 blue kernel: usb-storage: -- releasing irq URB
Nov 10 19:10:59 blue kernel: usb-storage: USB IRQ recieved for device on
host 1
Nov 10 19:10:59 blue kernel: usb-storage: -- IRQ data length is 0
Nov 10 19:10:59 blue kernel: usb-storage: -- IRQ state is -2
Nov 10 19:10:59 blue kernel: usb-storage: -- Interrupt Status (0x0, 0x0)
Nov 10 19:10:59 blue kernel: usb-storage: -- IRQ too short
Nov 10 19:10:59 blue kernel: usb-storage: -- usb_unlink_urb() returned 0
Nov 10 19:10:59 blue kernel: usb-storage: -- releasing main URB
Nov 10 19:10:59 blue kernel: usb-storage: -- usb_unlink_urb() returned
-19
Nov 10 19:10:59 blue kernel: usb-storage: -- calling
scsi_unregister_module()
Nov 10 19:10:59 blue kernel: usb-storage: release() called for host
usb-storage
Nov 10 19:10:59 blue kernel: usb-storage: -- sending US_ACT_EXIT command
to thre
ad
I tried to debug the problem myself, but I do not know enough about usb,
scsi and kernel programming in general, all I can track is that the
problem is probably somewhere in
/usr/src/kernel/drivers/usb/storage/scsiglue.c:
static int release(struct Scsi_Host *psh)
{
struct us_data *us = (struct us_data *)psh->hostdata[0];
US_DEBUGP("release() called for host %s\n", us->htmplt.name);
/* Kill the control threads
*
* Enqueue the command, wake up the thread, and wait for
* notification that it's exited.
*/
US_DEBUGP("-- sending US_ACT_EXIT command to thread\n");
us->action = US_ACT_EXIT;
up(&(us->sema));
wait_for_completion(&(us->notify));
/* remove the pointer to the data structure we were using */
(struct us_data*)psh->hostdata[0] = NULL;
/* we always have a successful release */
return 0;
}
It seems that wait_for_completion() never returns.
My current kernel version is 2.4.14, but I had the same problems with
older 2.4.x kernels, including ac patches. Never tried usb with 2.2.x.
Well, I would be happy if I could just reload usb-storage.o without
rebooting.
Greetings,
Oliver
--
Oliver Kurth
mailto:[EMAIL PROTECTED] http://leinekanal.de
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users