Commit 49cb01f6 authored by Matthew Dharm's avatar Matthew Dharm Committed by Greg Kroah-Hartman

[PATCH] PATCH: usb-storage: consolidate, cleanup, etc.

This patch fixes some spelling errors and adds some BUG_ON() calls so we
can make sure that all this new code is working properly.
parent 38b27b6e
...@@ -114,9 +114,10 @@ static int release(struct Scsi_Host *psh) ...@@ -114,9 +114,10 @@ static int release(struct Scsi_Host *psh)
/* Kill the control threads /* Kill the control threads
* *
* Enqueue the command, wake up the thread, and wait for * Enqueue the command, wake up the thread, and wait for
* notification that it's exited. * notification that it has exited.
*/ */
US_DEBUGP("-- sending exit command to thread\n"); US_DEBUGP("-- sending exit command to thread\n");
BUG_ON(atomic_read(&us->sm_state) != US_STATE_IDLE);
us->srb = NULL; us->srb = NULL;
up(&(us->sema)); up(&(us->sema));
wait_for_completion(&(us->notify)); wait_for_completion(&(us->notify));
...@@ -136,7 +137,7 @@ static int command( Scsi_Cmnd *srb ) ...@@ -136,7 +137,7 @@ static int command( Scsi_Cmnd *srb )
return DID_BAD_TARGET << 16; return DID_BAD_TARGET << 16;
} }
/* run command */ /* queue a command */
/* This is always called with scsi_lock(srb->host) held */ /* This is always called with scsi_lock(srb->host) held */
static int queuecommand( Scsi_Cmnd *srb , void (*done)(Scsi_Cmnd *)) static int queuecommand( Scsi_Cmnd *srb , void (*done)(Scsi_Cmnd *))
{ {
...@@ -146,6 +147,7 @@ static int queuecommand( Scsi_Cmnd *srb , void (*done)(Scsi_Cmnd *)) ...@@ -146,6 +147,7 @@ static int queuecommand( Scsi_Cmnd *srb , void (*done)(Scsi_Cmnd *))
srb->host_scribble = (unsigned char *)us; srb->host_scribble = (unsigned char *)us;
/* enqueue the command */ /* enqueue the command */
BUG_ON(atomic_read(&us->sm_state) != US_STATE_IDLE || us->srb != NULL);
srb->scsi_done = done; srb->scsi_done = done;
us->srb = srb; us->srb = srb;
...@@ -186,6 +188,7 @@ static int device_reset( Scsi_Cmnd *srb ) ...@@ -186,6 +188,7 @@ static int device_reset( Scsi_Cmnd *srb )
int result; int result;
US_DEBUGP("device_reset() called\n" ); US_DEBUGP("device_reset() called\n" );
BUG_ON(atomic_read(&us->sm_state) != US_STATE_IDLE);
/* set the state and release the lock */ /* set the state and release the lock */
atomic_set(&us->sm_state, US_STATE_RESETTING); atomic_set(&us->sm_state, US_STATE_RESETTING);
......
...@@ -849,6 +849,7 @@ void usb_stor_abort_transport(struct us_data *us) ...@@ -849,6 +849,7 @@ void usb_stor_abort_transport(struct us_data *us)
/* Normally the current state is RUNNING. If the control thread /* Normally the current state is RUNNING. If the control thread
* hasn't even started processing this command, the state will be * hasn't even started processing this command, the state will be
* IDLE. Anything else is a bug. */ * IDLE. Anything else is a bug. */
BUG_ON((state != US_STATE_RUNNING && state != US_STATE_IDLE));
/* set state to abort and release the lock */ /* set state to abort and release the lock */
atomic_set(&us->sm_state, US_STATE_ABORTING); atomic_set(&us->sm_state, US_STATE_ABORTING);
......
...@@ -473,7 +473,7 @@ static int usb_stor_control_thread(void * __us) ...@@ -473,7 +473,7 @@ static int usb_stor_control_thread(void * __us)
} }
/* Set up the URB, the usb_ctrlrequest, and the IRQ pipe and handler. /* Set up the URB, the usb_ctrlrequest, and the IRQ pipe and handler.
* ss->dev_semaphore should already be locked. * ss->dev_semaphore must already be locked.
* Note that this function assumes that all the data in the us_data * Note that this function assumes that all the data in the us_data
* strucuture is current. This includes the ep_int field, which gives us * strucuture is current. This includes the ep_int field, which gives us
* the endpoint for the interrupt. * the endpoint for the interrupt.
......
...@@ -131,7 +131,6 @@ struct us_data { ...@@ -131,7 +131,6 @@ struct us_data {
*/ */
struct semaphore dev_semaphore; /* protect pusb_dev */ struct semaphore dev_semaphore; /* protect pusb_dev */
struct usb_device *pusb_dev; /* this usb_device */ struct usb_device *pusb_dev; /* this usb_device */
unsigned long flags; /* from filter initially */ unsigned long flags; /* from filter initially */
/* information about the device -- always good */ /* information about the device -- always good */
...@@ -164,8 +163,8 @@ struct us_data { ...@@ -164,8 +163,8 @@ struct us_data {
Scsi_Cmnd *srb; /* current srb */ Scsi_Cmnd *srb; /* current srb */
/* thread information */ /* thread information */
int pid; /* control thread */ int pid; /* control thread */
atomic_t sm_state; atomic_t sm_state; /* what we are doing */
/* interrupt info for CBI devices -- only good if attached */ /* interrupt info for CBI devices -- only good if attached */
struct semaphore ip_waitq; /* for CBI interrupts */ struct semaphore ip_waitq; /* for CBI interrupts */
...@@ -177,7 +176,7 @@ struct us_data { ...@@ -177,7 +176,7 @@ struct us_data {
unsigned char irqdata[2]; /* data from USB IRQ */ unsigned char irqdata[2]; /* data from USB IRQ */
/* control and bulk communications data */ /* control and bulk communications data */
struct semaphore current_urb_sem; /* to protect irq_urb */ struct semaphore current_urb_sem; /* protect current_urb */
struct urb *current_urb; /* non-int USB requests */ struct urb *current_urb; /* non-int USB requests */
struct usb_ctrlrequest *dr; /* control requests */ struct usb_ctrlrequest *dr; /* control requests */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment