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

Reply via email to