linux/drivers/usb/storage
Alan Stern 2f67cd5b1d usb-storage: fix bugs in the disconnect pathway
This patch (as961) fixes a couple of bugs in the disconnect pathway of
usb-storage.

The first problem, which apparently has been around for a while
although nobody noticed it, shows up when an aborted command is still
pending when a disconnect occurs.  The SCSI error-handler will
continue to wait in command_abort() until the us->notify completion is
signalled.  Thus quiesce_and_remove_host() needs to signal it.

The second problem was introduced recently along with autosuspend
support.  Since usb_stor_scan_thread() now calls
usb_autopm_put_interface() before exiting, we can't simply leave the
scanning thread running after a disconnect; we must wait until the
thread exits.  This is solved by adding a new struct completion to the
private data structure.  Fortuitously, it allows the removal of the
rather clunky mechanism used in the past to insure that all threads
have finished before the module is unloaded.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-08-22 14:27:52 -07:00
..
alauda.c
alauda.h
datafab.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
datafab.h
debug.c
debug.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
dpcm.c USB: drivers/usb/storage/dpcm.c whitespace cleanup 2007-07-19 17:46:08 -07:00
dpcm.h
freecom.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
freecom.h
initializers.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
initializers.h USB Storage: add rio karma eject support 2006-09-27 11:58:54 -07:00
isd200.c
isd200.h
jumpshot.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
jumpshot.h
karma.c USB Storage: add rio karma eject support 2006-09-27 11:58:54 -07:00
karma.h USB Storage: add rio karma eject support 2006-09-27 11:58:54 -07:00
Kconfig Fix several typos in drivers/ 2006-10-03 22:31:37 +02:00
libusual.c libusual: change block scope variable to function scope 2007-04-27 13:28:34 -07:00
Makefile USB Storage: add rio karma eject support 2006-09-27 11:58:54 -07:00
onetouch.c USB: storage: onetouch: clean up urb->status usage 2007-07-19 17:46:06 -07:00
onetouch.h
protocol.c
protocol.h
scsiglue.c usb-storage: implement autosuspend 2007-07-12 16:34:43 -07:00
scsiglue.h
sddr09.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sddr09.h
sddr55.c
sddr55.h
shuttle_usbat.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
shuttle_usbat.h
transport.c [PATCH] slab: remove SLAB_NOIO 2006-12-07 08:39:23 -08:00
transport.h
unusual_devs.h USB: NIKON D50 is an unusual device 2007-07-30 13:27:46 -07:00
usb.c usb-storage: fix bugs in the disconnect pathway 2007-08-22 14:27:52 -07:00
usb.h usb-storage: fix bugs in the disconnect pathway 2007-08-22 14:27:52 -07:00