 /* queuecommand won't accept any new commands and the control * thread won't execute a previously-queued command.  If there * is such a command pending, complete it with an error. */ if (us->srb) { us->srb->result = DID_NO_CONNECT << 16; scsi_lock(us_to_host(us)); us->srb->scsi_done(us->srb); us->srb = NULL; scsi_unlock(us_to_host(us)); }  /* Now we own no commands so it's safe to remove the SCSI host */ 
static void quiesce_and_remove_host(struct us_data *us){	/* Prevent new USB transfers, stop the current command, and	 * interrupt a SCSI-scan or device-reset delay */	set_bit(US_FLIDX_DISCONNECTING, &us->flags);	usb_stor_stop_transport(us);	wake_up(&us->delay_wait);	/* It doesn't matter if the SCSI-scanning thread is still running.	 * The thread will exit when it sees the DISCONNECTING flag. */	/* Wait for the current command to finish, then remove the host */	down(&us->dev_semaphore);	up(&us->dev_semaphore);	scsi_remove_host(us_to_host(us));}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/26186ba77b493204ae0fadc3c88a67b14f22168f/usb.c/clean/drivers/usb/storage/usb.c